亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++報錯 XX does not name a type;field `XX’ has incomplete type的解決方案

 更新時間:2023年08月03日 12:01:28   作者:coder i++  
這篇文章主要給大家介紹了C++報錯 XX does not name a type;field `XX’ has incomplete type解決方案,文中通過代碼示例講解的非常詳細,需要的朋友可以參考下

C++報錯 XX does not name a type;field `XX’ has incomplete type解決方案

兩個C++編譯錯誤及解決辦法–does not name a type和field `XX’ has incomplete type

編譯錯誤一:XX does not name a type

編譯錯誤二:field `XX’ has incomplete type

編譯錯誤一:XX does not name a type

拿個例子來講,如果兩個類定義如下:

class B{
public:
B(){}
~B(){}
private:
A a;
};
class A{
public:
A(){}
~A(){}
private:
int a;
};

編譯成則將報一個error:“A does not name a type”

即使clase A和class B分別在兩個文件定義,并且在定義B的文件頭中#include了class A的頭文件也同樣會報這個錯(這是因為編譯和鏈接之間的先后關系造成的)。

解決該錯誤的辦法:

在class B定義聲明之前先聲明一下class A, 如下:

class A;
class B{
public:
B(){}
~B(){}
private:
A a;
};
class A{
public:
A(){}
~A(){}
private:
int a;
};

編譯錯誤二:field `XX’ has incomplete type

同樣緊跟上面的例子,通過問題一的辦法,第一個錯誤已經消失,但是馬上第二個錯誤就出現了!還是同一個位置。

這個錯誤的意思,就是說class B中的XX域的類型不夠完整,為什么呢?明明class A后面已經定義好了啊。其實原因還是和前面一樣,在class B定義之前,我們也只是對class A進行了聲明而并沒有進行具體的定義,所以解決該錯誤的方法是:

將class B定義中的A域改用指針就行了。改正后代碼為:

class A;
class B{
public:
B(){}
~B(){}
private:
A *a;
};
class A{
public:
A(){}
~A(){}
private:
int a;
};

這樣,這段簡單的代碼才能沒有錯誤的通過編譯。

到此這篇關于C++報錯 XX does not name a type;field `XX’ has incomplete type解決方案的文章就介紹到這了,更多相關C++報錯field `XX’ has incomplete type內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • windows下安裝QT及visual studio 2017搭建開發(fā)環(huán)境

    windows下安裝QT及visual studio 2017搭建開發(fā)環(huán)境

    這篇文章主要介紹了windows下安裝QT及visual studio 2017搭建開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • c語言中static的用法詳細示例分析

    c語言中static的用法詳細示例分析

    以下是對c語言中static函數的用法進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • C++內存分布及用法

    C++內存分布及用法

    這篇文章主要介紹了C++內存分布及用法,從內存的基礎概念到內存分配進行了講解,內存是我們開發(fā)中最重要的一部分,往往邏輯上的錯誤就會造成內存泄漏,導致程序無法運行,下面我們就來了解文章對該內容的詳細介紹
    2021-12-12
  • C++11中bind綁定器和function函數對象介紹

    C++11中bind綁定器和function函數對象介紹

    這篇文章主要介紹了C++11中bind綁定器和function函數對象介紹,綁定器,函數對象和lambda表達式只能使用在一條語句中,更多相關內容需要的小伙伴可以參考一下
    2022-07-07
  • 基于OpenCV?差分法實現綠葉識別

    基于OpenCV?差分法實現綠葉識別

    物體識別是圖像處理學在現實生活中較多的應用之一,本文提供了一種相對簡單的思路來實現綠葉識別,適合初學圖像處理的新人研究參考。感興趣的同學可以關注一下
    2021-11-11
  • C語言平衡二叉樹詳解

    C語言平衡二叉樹詳解

    這篇文章主要介紹了C語言平衡二叉樹的相關資料,需要的朋友可以參考下,小編覺得這篇文章寫的還不錯,希望能夠給你帶來幫助
    2021-11-11
  • 怎么實現類的成員函數作為回調函數

    怎么實現類的成員函數作為回調函數

    不使用成員函數,為了訪問類的成員變量,可以使用友元操作符(friend),在C++中將該函數說明為類的友元即可
    2013-10-10
  • C/C++?extern關鍵字用法示例全面解析

    C/C++?extern關鍵字用法示例全面解析

    這篇文章主要為大家介紹了C/C++?extern關鍵字用法示例全面解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • c語言字符數組與字符串的使用詳解

    c語言字符數組與字符串的使用詳解

    本篇文章是對c語言中字符數組與字符串的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 如何在c語言下關閉socket

    如何在c語言下關閉socket

    如果不主動關閉socket的話,系統(tǒng)不會自動關閉的,除非當前進程掛掉了,操作系統(tǒng)把占用的socket回收了才會關閉。下面小編來簡單介紹下
    2019-05-05

最新評論