所以我遇到了一个问题,我确信有一个非常明显的解决方案,但我似乎无法弄明白。基本上,当我尝试在我的标题中执行类定义和在我的源文件中实现时,我收到一个错误,说我正在重新定义我的类。使用Visual C ++ 2010 Express。
确切错误:“错误C2011:'节点':'类'类型重新定义”
以下示例代码:
Node.h:
#ifndef NODE_H
#define NODE_H
#include <string>
class Node{
public:
Node();
Node* getLC();
Node* getRC();
private:
Node* leftChild;
Node* rightChild;
};
#endif
Node.cpp:
#include "Node.h"
#include <string>
using namespace std;
class Node{
Node::Node(){
leftChild = NULL;
rightChild = NULL;
}
Node* Node::getLC(){
return leftChild;
}
Node* Node::getRC(){
return rightChild;
}
}
答案 0 :(得分:7)
class Node{
Node::Node(){
leftChild = NULL;
rightChild = NULL;
}
Node* Node::getLC(){
return leftChild;
}
Node* Node::getRC(){
return rightChild;
}
}
在代码中声明该类两次,第二次在.cpp文件中声明。要为您的课程编写函数,您可以执行以下操作
Node::Node()
{
//...
}
void Node::FunctionName(Type Params)
{
//...
}
不需要课程
答案 1 :(得分:2)
正如它所说,你正在重新定义Node类。 .cpp文件仅用于实现函数。
//node.cpp
#include <string>
using namespace std;
Node::Node() {
//defined here
}
Node* Node::getLC() {
//defined here
}
....