【发布时间】:2011-02-07 10:21:12
【问题描述】:
我的模板和指针有问题(我认为)。以下是我的部分代码:
/* ItemCollection.h */
#ifndef ITEMCOLLECTION_H
#define ITEMCOLLECTION_H
#include <cstddef>
using namespace std;
template <class T> class ItemCollection
{
public:
// constructor
//destructor
void insertItem( const T );
private:
struct Item
{
T price;
Item* left;
Item* right;
};
Item* root;
Item* insert( T, Item* );
};
#endif
还有函数定义的文件:
/* ItemCollectionTemp.h-member functions defintion */
#include <iostream>
#include <cstddef>
#include "ItemCollection.h"
template <class T>
Item* ItemCollection <T>::insert( T p, Item* ptr)
{
// function body
}
以下是这行代码产生的错误:
Item* ItemCollection <T>::insert( T p, Item* ptr)
错误:
错误 C2143:语法错误:缺少 ';'在'*'之前
错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
错误 C2065:“类型”:未声明的标识符
错误 C2065:“类型”:未声明的标识符
错误 C2146:语法错误:在标识符 'p' 之前缺少 ')'
错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
error C2470: 'ItemCollection::insert' : 看起来像函数定义,但没有参数列表;跳过明显的身体
错误 C2072:“ItemCollection::insert”:函数初始化
错误 C2059:语法错误:')'
非常感谢任何帮助。
【问题讨论】:
-
@Kary:既然您要求对 Alexey 的回答做出解释,请记住,除非您真的对此感到满意,否则您不应接受答案。如果你想要更多细节,就说出来,不要接受。或者接受另一个答案,它提供了您想要的详细信息。