-1
//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;   }

这应该有效,不是吗?当我在 main 函数上方定义 list.h 和 list.cpp 的内容时,一切正常。但是,这给了我一些错误:

main.cpp:(.text+0x12): 未定义引用List::size() const' main.cpp:(.text+0x4f): 未定义引用List::~List()' List<int>::List()'
main.cpp:(.text+0x1e): undefined reference to

List<int>::~List()'
main.cpp:(.text+0x64): undefined reference to

当我List<int> a;将主要功能更改List<int> a();为唯一的错误时,我得到的是:

main.cpp:10:12: 错误:请求'a'中的成员'size',它是非类类型'List()'</p>

帮帮我,怎么了?

4

1 回答 1

1

List是一个模板类,并且(大多数时候)这意味着它的代码必须在头文件中。

此外,

List<int> a();

是一个被调用的函数的声明,a它返回一个List<int>. 我强调:a不是类型的默认初始化对象List<int>

于 2013-10-04T15:46:41.103 回答