【发布时间】:2016-07-07 19:21:44
【问题描述】:
我已经研究了一段时间的语法错误 C2061,我了解到它通常是由头文件的循环依赖引起的。但是,我相信我应该在我的文件中解决这个问题,但我仍然遇到这个问题。
Arc.h
#pragma once
#include <string>
using namespace std;
class Node;
class Arc
{
public:
Arc(Node &p_destination, const string &p_mode);
~Arc();
private:
string m_mode;
Node* m_destination;
};
节点.h
#pragma once
#include <string>
#include <vector>
using namespace std;
class Arc;
class Node
{
public:
Node(const string &p_name, const int &p_identifier, const float &p_latitude, const float &p_longitude);
~Node();
void set_arcs(Arc* p_arc) { m_arcs.push_back(p_arc); } //Line that causes the error
private:
std::vector<Arc*> m_arcs;
//Other Private Variables removed
};
头文件都已包含在相应的 cpp 文件中。非常感谢您对此事的任何帮助!
编辑:下面的完整错误消息
"Syntax Error: identifier 'Arc'"
【问题讨论】:
-
@LoadData 不能把
Node::set_arcs的实现放到.cpp文件里吗? -
@EdChum 虽然它可能是糟糕设计的标志,但我看不出这有什么问题。一个是指针类型,另一个在向量内,所以没有无限递归。
-
请发布整个错误信息。
-
这段代码是否被复制和粘贴(不是从内存中重新键入),这是第一个错误消息吗?
标签: c++ namespaces token-name-resolution