gpt4 book ai didi

c++ - C++ 中的模板类和方法

转载 作者:行者123 更新时间:2023-11-28 02:30:44 25 4
gpt4 key购买 nike

我已经使用 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.

最佳答案

在您的 _tmain() 中使用TreeNode<>尚未宣布。

必须将完整的模板类声明/定义放在_tmain()之前,或者甚至更好地将它放在一个单独的头文件中,并包含它。

关于c++ - C++ 中的模板类和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29083206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com