//includes, using etc.
int main()
{
List<int> a;
cout << a.size() << endl;
return 0;
}
//list.h
template <class T>
class List{
int items;
public:
List();
~List();
int size() const;
};
//list.cpp
#include "list.h"
template<class T>
List<T>::List() :
items(0)
{}
template<class T>
List<T>::~List()
{}
template<class T>
int List<T>::size() const
{ return items; }
这应该有用,不应该吗?当我在主函数上面定义list.h和list.cpp的内容时,一切正常。但是,这给了我一些错误:
main.cpp :(。text + 0x12):对
List<int>::List()'
List :: size()const'的未定义引用 main.cpp :(。text + 0x4f):未定义引用
main.cpp:(.text+0x1e): undefined reference toList<int>::~List()'
List :: ~List()'
main.cpp:(.text+0x64): undefined reference to
当我将主函数中的List<int> a;
更改为List<int> a();
时,我得到的唯一错误是:
main.cpp:10:12:错误:请求'a'中的成员'size',即 非类型'List()'
帮助我,出了什么问题?
答案 0 :(得分:1)
List
是一个模板类,(大多数情况下)这意味着它的代码必须位于头文件中。
此外,
List<int> a();
是名为a
的函数的声明,它返回List<int>
。我强调:a
不是List<int>
类型的默认初始化对象。