簡體   English   中英

c ++兩個類互相引用錯誤:'ClassName'之前的預期類型說明符

[英]c++ two class reference each other Error: expected type-specifier before 'ClassName'

我在頭文件中寫了兩個類,如下所示,兩個類相互引用,我在A類中使用之前添加了B類,但它有一個錯誤。

#ifndef TEST_H
#define TEST_H
class B;
class A {
public:
    B *b;
    void test() {
        b = new B();
    }
};

class B {
public:
    A *a;
    void test() {
        a = new A();
    }
};

#endif // TEST_H

錯誤消息圖像

怎么解決? 謝謝。

b = new B();

此時,前方聲明已不再適用。 必須知道類B的定義才能實例化類的實例。

只需要延遲兩個test方法的定義,直到定義了兩個類:

class B;
class A {
public:
    B *b;
    void test();
};

class B {
public:
    A *a;
    void test();
};

inline void A::test() {
    b = new B();
}

inline void B::test() {
    a = new A();
}

從技術上講,沒有必要重新定位類的test()方法的定義,但它看起來更整潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM