- 论坛徽章:
- 0
|
1.GetRoot() 方法报错信息如下。
1>------ Build started: Project: Demo, Configuration: Debug Win32 ------
1> main.cpp
1>c:\users\administrator\desktop\demo\demo\binarysearchtree.h(41): error C2143: syntax error : missing ';' before '*'
1>c:\users\administrator\desktop\demo\demo\binarysearchtree.h(41): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\administrator\desktop\demo\demo\binarysearchtree.h(41): error C2065: 'Key' : undeclared identifier
1>c:\users\administrator\desktop\demo\demo\binarysearchtree.h(41): error C2065: 'Val' : undeclared identifier
1>c:\users\administrator\desktop\demo\demo\binarysearchtree.h(41): error C2923: 'IBSTree' : 'Key' is not a valid template type argument for parameter 'Key'
1>c:\users\administrator\desktop\demo\demo\binarysearchtree.h(41): error C2923: 'IBSTree' : 'Val' is not a valid template type argument for parameter 'Val'
个人觉得是找不到Node的定义,但是如果是函数参数中Node就不会报错。请高手指点。说明具体原因和修改方法。
多谢。
上代码。- #ifndef _BINARY_SEARCH_TREE_H_
- #define _BINARY_SEARCH_TREE_H_
- template <typename Key, typename Val>
- class IBSTree
- {
- private:
- struct Node
- {
- Key k;
- Val v;
- Node *parent;
- Node *left;
- Node *right;
- };
- Node *m_pRoot;
- typedef int (*TCmpFunc)(Key k1, Key k2);
- TCmpFunc m_pCmpFunc;
- public:
- IBSTree();
- ~IBSTree();
-
- Node *GetRoot();
- };
- template <typename Key, typename Val>
- Node *IBSTree<Key, Val>::GetRoot()
- {
- return m_pRoot;
- }
- template <typename Key, typename Val>
- IBSTree<Key, Val>::IBSTree()
- {
- m_pRoot = NULL;
- m_pCmpFunc = NULL;
- }
- template <typename Key, typename Val>
- IBSTree<Key, Val>::~IBSTree()
- {
- m_pRoot = NULL;
- m_pCmpFunc = NULL;
- }
- #endif
复制代码 |
|