C 包括文件会导致未知错误
C++ Including a file causes unidentified errors
我有两个类别引起问题 - 类" A"answers" B"类。A类必须能够存储B类的对象,但是B类中的功能必须在A类A的参数中接受。
我拥有的代码。a类:
#ifndef INC_A
#define INC_A
#include "ClassB.h"
class ClassA
{
private:
ClassB* b;
public:
void Foo()
{
b = new ClassB;
b->Foo2(this);
}
}
#endif
B类:
#ifndef INC_B
#define INC_B
#include "ClassA.h"
class ClassB
{
public:
void Foo2(ClassA* a)
{
// Do stuff with "a" here
}
}
#endif
我遇到的错误如下:
'ClassB::Foo2': function does not take 1 arguments
syntax error: identifier 'ClassA'
有没有办法解决这个看似无限的循环?
最简单的情况:
#ifndef INC_A_AND_B
#define INC_A_AND_B
class ClassB; // forward declaration for B
class ClassA
{
private:
ClassB* b; // usage of B
public:
void Foo()
{
b = new ClassB;
b->Foo2(this);
}
};
// actual definition for B
class ClassB
{
public:
void Foo2(ClassA* a)
{
// Do stuff with "a" here
}
};
#endif
在更复杂的场景中,可能值得提取抽象接口,然后将两个类作为后代。
是的,您需要将类分开为标题和实现文件(.h and .cpp(,然后使用正向定义。例如:
classa.h:
#ifndef INC_A
#define INC_A
class ClassB;
class ClassA
{
private:
ClassB* b;
public:
void Foo();
}
#endif
classa.cpp:
#include "ClassA.h"
void ClassA::Foo() {
b = new ClassB;
b->Foo2(this);
}
尝试在类定义的末尾添加半隆。例如:
class ClassB
{
public:
void Foo2(ClassA* a)
{
// Do stuff with "a" here
}
}; // <- semicolon
相关文章:
- 双链表的擦除值函数,未知错误
- 未知C++错误:致命错误:glibc检测到无效的stdio句柄
- 带有unique_ptr的通用单链表,MS visual studio C++中存在未知错误
- 在最坏的情况下试验快速排序.它运行良好,但在最坏的情况下发生未知错误.我想
- C++ [] 重载未知错误
- 打电话时返回未知错误
- C 包括文件会导致未知错误
- Qtcpserver 仅在调试器下在侦听函数上返回未知错误
- std::p romise<void> 抛出未知错误,除非调用睡眠
- 如何在将我的 QT 应用程序交叉编译为 raspberry-pi3 时修复未知错误
- 使用reinterpret_cast的未知错误
- 如何修复QFile打开错误(未知错误),即使文件存在
- 使用c++特征库时出现未知错误
- 使用特征库的 mingw 出现未知错误
- CUDA 未知错误后 cuBLAS 调用
- 未知错误,调试器只给我一个内存地址
- 在子类之外实现函数导致未知错误
- 影响格雷厄姆查找凸包算法的未知错误
- 未知错误(-1000)执行cl_command_ndrange_kernel
- QT NetworkAccessManager未知错误