C 前向宣告應用注意

2021-07-25 19:47:57 字數 1477 閱讀 7285

在設計模式中,簡單工廠模式中乙個是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 即已知它是乙個類型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完全型別只能用於定義...