【发布时间】:2011-11-15 17:42:44
【问题描述】:
我正在尝试使用相互引用的成员编写 2 个类。我不确定我做错了什么,或者这是不可能的。谁能帮帮我...
Source.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:
};
我得到的错误是:
错误 C2143:语法错误:缺少 ';'在'之前 错误 C2238:“;”之前的意外标记
错误 C4430:缺少类型说明符 - 假定为 int。
我很确定我没有遗漏任何分号或类似的东西。如果我取出其中一名成员,该程序将起作用。我尝试找到类似的问题,解决方案是使用指针,但这就是我正在做的,它似乎没有工作!
【问题讨论】:
-
你有两个文件试图#include 彼此,这不好......
-
附注 - 您需要在头文件中为向量指定命名空间 (
std:vector <Router>)
标签: c++ pointers c-preprocessor class-design