我试图创建一个链接列表,但是当我运行IsEmpty(测试)时,它只是说它未在此范围内声明,即使它是公开的。
我在模板方面很陌生,但我无法在谷歌找到答案,所以我不得不在这里问一下。有谁知道问题是什么?
此外,错误指向main(),我调用IsEmpty()
//.h
template <typename ItemType>
class Node
{
public:
ItemType Data;
Node <ItemType> *next;
int position;
};
template <typename ItemType>
class Linked_List
{
public:
Node <ItemType> *start;
Linked_List();
bool IsEmpty();
}
//.cpp
#include "Linked_List.h"
#include <iostream>
#include <cstdlib>
using namespace std;
template <typename ItemType>
Linked_List <ItemType>::Linked_List(){
start = NULL;
}
template <typename ItemType>
bool Linked_List <ItemType>::IsEmpty(){
if (start == NULL){
return true;
}
return false;
}
int main(){
Linked_List <int> test;
cout << IsEmpty(test) << endl; //error points to here
}
答案 0 :(得分:2)
调用成员函数的正确方法是obj.function(...)
。你需要:
cout << test.IsEmpty() << endl; //error points to here
答案 1 :(得分:1)
必须在头文件中声明和定义模板。
答案 2 :(得分:0)
模板标头不能用作非模板标头。您必须在标题内定义模板函数。只需将.CPP文件中的定义移动到.h文件的末尾即可。
完成后,您可以从您创建的对象中调用该函数。