gpt4 book ai didi

使用具有结构成员的泛型类时出现 C++ 编译器错误

转载 作者:行者123 更新时间:2023-11-27 23:25:08 24 4
gpt4 key购买 nike

我正在构建一个通用二叉树,其中包含一个结构 TreeNode。我实现了一个函数 rootPtr() ,它返回指向树根的指针。 binarytree.h 简单如下:

template <class T>
class BinaryTree {
public:

typedef struct TreeNode {
T item;
TreeNode *leftChildPtr; // pointer to left child
TreeNode *rightChildPtr;

public:
TreeNode(const T& nodeItem,
TreeNode *left,
TreeNode * right)
: item(nodeItem), leftChildPtr(left), rightChildPtr(right) {
}

TreeNode(const T & nodeItem)
: item(nodeItem) {
leftChildPtr = NULL;
rightChildPtr = NULL;
}
} TN; //end treenode

//Function prototype
TN* rootPtr() const;

private:
TN *root;

} //end binarytree

这是导致错误的 binarytree.cpp 的片段。

template <class T>
BinaryTree<T>::TN* BinaryTree<T>::rootPtr() {
return root;
}

编译器报错error: expected constructor, destructor, or type conversion before '*' token
我以前见过这个错误,并通过使用 like BinaryTree:: 来处理它,但是这次因为它是通用的,所以我不知道该怎么办。任何帮助将不胜感激。

最佳答案

简化的经验法则:当类在单独的 cpp 文件中有模板时,您不能定义成员函数。尝试将其与类定义一起放在标题上;)

关于使用具有结构成员的泛型类时出现 C++ 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9967712/

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