成员相互引用的 C++ 类

标签 c++ pointers c-preprocessor class-design

我正在尝试编写 2 个成员相互引用的类。我不确定我是做错了什么还是不可能的。任何人都可以帮助我...

源.cpp

#include "Headers.h"
using namespace std;

void main()
{
    Network* network = new Network();

    system("pause");
    return;
}

Headers.h

#ifndef Headers_h
#define Headers_h

#include <iostream>
#include <vector>
#include "Network.h"
#include "Router.h"

#endif

Network.h

#include "Headers.h"

class Network
{
protected:
    vector<Router> Routers;
};

Router.h

#include "Headers.h"

class Router
{
protected:
    Network* network;
public:
};

我得到的错误是:

error C2143: syntax error : missing ';' before '<'
error C2238: unexpected token(s) preceding ';'
error C4430: missing type specifier - int assumed.

我很确定我没有遗漏任何分号或类似的东西。如果我取出其中一名成员,该程序会发现。我试着找到类似的问题,解决方案是使用指针,但这就是我正在做的,但似乎没有用!

最佳答案

第一个错误 - 您需要显式使用命名空间:

std::vector<Router> Routers;

不要“使用命名空间标准;”在头文件中

其他错误是第一个导致的:)

对于后面定义的类的引用,需要做Router类的前向声明,放在

class Router;

进入你的网络.h

关于成员相互引用的 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8140713/

相关文章:

c++ - 处理 IDispatch 参数和 COM

c++ - 错误: request for member ‘prev_’ in something not a structure or union

c++ - 当 std::vector 只包含两个元素时使用它效率低吗?

c++ - visual studio 中的 cublas 链接

c++ - 使用头文件 : Undefined symbols for architecture x86_64 编译 C++ 程序时出错

c - mallocing 结构数组创建的数组太小

C# 预处理器指令

c++ - 正确使用cpp中的定义宏替换函数的名称

c - 为什么 "switch-case"将 #define 标识符视为常量而不是 const 限定变量?

c++ - 除了在构造函数参数中,我可以更改 FL_Window 的标题吗?