日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

error: field 'b' has imcomplete type

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 error: field 'b' has imcomplete type 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在下面的程序中,在編譯時會遇到下面的錯誤:

error: field 'b' has incomplete type

域b是一個不完備的類型,即class B的聲明不完備

1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 private: 7 class B b; 8 public: 9 A(){cout<<"this is A constructor!"<<endl;} 10 }; 11 12 class B 13 { 14 public: 15 B(){cout<<"this is B constructor!"<<endl;} 16 }; 17 18 int main() 19 { 20 A a; 21 return 0; 22 }

?

分析:

出現該錯誤的原因是在聲明class A的成員變量b時, b的類型 class B 還沒有定義。

類或結構體的前向聲明只能用來定義指針對象,當編譯到7 class B b;?時還沒有發現定義,

不知道該類或者結構的內部成員,沒有辦法具體的構造一個對象。

Debug:

將class B的定義放到class A之前即可編譯通過

?

那么還有哪些情況下會出現這樣的情況呢?

1. 在使用設計模式時,我們時常會用到工廠模式,當我們需要添加工序類的時候,往往習慣現在工廠類中定義工序的對象,然后在工廠類之后定義工序類,從而出現本文中的錯誤。

? ? 比較好的解決方法是,將工序類單獨存放到一個頭文件中,然后在工廠類所在文件中引用該頭文件。

2. 在使用STL容器的時候,往往忘記添加相應的頭文件。如#include <vector>; #include <list>; #include <deque>等

?

?

轉載于:https://www.cnblogs.com/double-win/p/3683550.html

總結

以上是生活随笔為你收集整理的error: field 'b' has imcomplete type的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。