我已经使用C#大约一年了,我正试图在Visual Studio中继续使用C ++。无论如何,我试图在C ++中创建一个通用的二叉树,并遇到一些我似乎无法解决的编译错误。
最初的研究似乎指向将类模板放在头文件中,但这给了我许多其他错误。
非常感谢来自具有更多经验的人的一些建议。
由于
到目前为止,这是代码。
#include "stdafx.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
TreeNode<int> IntTree(1, TreeNode<int>(1), TreeNode<int>(2));
cout << IntTree.toString() << endl;
return 0;
}
template<class TData> class TreeNode
{
private:
TData Data;
TreeNode<TData>& Left;
TreeNode<TData>& Right;
void setData(TData data)
{
Data = data;
}
public:
TreeNode<TData>(TData data)
{
setData(data);
}
TreeNode<TData>(TData data, TreeNode<TData> leftNode, TreeNode<TData> rightNode)
{
setData(data);
setLeft(leftNode);
setRight(rightNode);
}
void setLeft(TreeNode<TData>& leftNode)
{
Left = leftNode;
}
void setRight(TreeNode<TData>& rightNode)
{
Right = rightNode;
}
TreeNode<TData>& getLeft()
{
return Left;
}
TreeNode<TData>& getRight()
{
return Right;
}
TData& getData()
{
return &Data;
}
string toString()
{
return Left->toString() + Data + Right->toString();
}
};
error C2228: left of '.toString' must have class/struct/union. error C2065: 'TreeNode' : undeclared identifier. error C2065: 'IntTree' : undeclared identifier error C2062: type 'int' unexpected.
答案 0 :(得分:2)
您_tmain()
TreeNode<>
的使用尚未宣布。
您必须在_tmain()
之前放置完整的模板类声明/定义,或者更好地将其放在单独的头文件中,并包括它。