c ++两个类互相引用错误:“ ClassName”之前的预期类型说明符

jecyhw

我在头文件中编写了两个类,如下所示,并且两个类相互引用,并且我在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

错误消息图像

怎么解决呢?谢谢你。

山姆·瓦尔沙夫奇克(Sam Varshavchik)
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()方法的定义,但是用这种方法看起来很整洁。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++错误:预期类型说明符

C 错误:预期的声明说明符或“*”标记之前的“...”

预期的类型说明符C ++模板类

在 C++ 中得到预期的类型说明符错误

在 C++ 中的错误之前无效使用不完整的类型和预期的类型说明符

C ++:const引用,类型说明符之前和之后

错误:“数字”之前的预期类型说明符

错误:'Elem' 之前的预期类型说明符

错误:预期的声明说明符或C中“ tWordInfo”之前的“ ...”

C ++嵌套名称空间错误-预期的类型说明符错误

错误:在Linux上编译代码时,预期的类型说明符在“ ...”之前

C ++应该为类对象指定类型说明符

Flex 的 C 错误:缺少类型说明符?

C Printfs 需要一个类型说明符

C ++中的“此声明没有存储类或类型说明符”错误

错误:C++ 中的“此声明没有存储类或类型说明符”

在C ++中每个类成员之前是否是可接受的用法访问说明符

C ++宏给出C4430错误:缺少类型说明符

C ++ MSVC dll编译错误,缺少类型说明符和重新定义

C ++错误:嵌套名称说明符中使用的类型不完整

c 程序 - netpay 的说明符错误(打印行)和冲突类型

缺少类型说明符-int假定C4430错误

错误:C ++要求所有声明都使用类型说明符?

编译器错误C4430:缺少类型说明符-假定为int

如何修复错误“C++ 要求所有声明的类型说明符?”

获取错误:字符串常量之前的预期声明说明符或“...”

我在“('令牌”之前收到错误“预期的声明说明符或'...'?

错误:XXX 之前的预期声明说明符或“...”(各种参数)

C ++ / ENUM /类型名称/说明符