在設計模式中,簡單工廠模式中乙個是product類(產品類),乙個是productmanager類(工廠類),而兩個類互相引用了,形成了環形引用
,而前向宣告可以解決這個問題,但是在應用前向宣告
的時候需要注意一點就是,宣告僅僅是宣告,並沒有實現,因此不能呼叫宣告的變數的方法或者實現該類
。舉例如下:
去掉注釋就是正確的前向宣告,沒有去掉注釋就是錯誤的前向宣告應用
g++ main.cpp product.cpp product_manager.cpp -i. -std=c++11
product.h
#pragma once
#include
using
namespace
std;
class productmanager;
// product
class product ;
product.cpp
#include
"product.h"
product::product(productmanager *_manager, string _name)
}string product::getname()
void product::setname(string _name)
}
product_manager.h
#pragma once
#include
using
namespace
std;
class product;
class productmanager ;
product_manager.cpp
#include
"product_manager.h"
product* productmanager::createproduct(string _name)
void productmanager::abandonproduct(product *p)
void productmanager::editproduct(product *p, string _name)
bool productmanager::iscreateproduct()
main.cpp
#include
#include
#include "product_manager.h"
#include "product.h"
using
namespace
std;
int main()
當然,工廠模式真正的實現並非如此潦草,肯定需要結合多型。 c 前向宣告
對類a和類b 1 a用到了b的型別,則b要在a之前宣告。如果此時b又用到了a,則可以在a的完整定義前,前向宣告b 2 a的方法用的了b的方法,則a的方法的實現應該在b的方法實現之後。3 若a.op 用到了b.op 且b.op 又用到了a.op 形成了死鎖,此時可借助第三個類,即中介者模式 4 所有兩...
C 前向宣告
前向宣告 可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete type 即已知screen是乙個型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完...
c 前向宣告
1.前向宣告 可以宣告乙個類而不定義它。這個宣告,被稱為前向宣告 forward declaration 在宣告之後,定義之前,這個類是乙個不完全型別 incompete type 即已知它是乙個類型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完全型別只能用於定義...