未在此范围内声明的 C++ 模板成员函数

标签 c++ class templates

<分区>

我正在尝试创建一个链表,但是当我运行 IsEmpty(test) 时,它只是说它没有在此范围内声明,即使它是公开的。

我是模板方面的新手,但我无法在谷歌上找到答案,所以我不得不在这里提问。有人知道问题出在哪里吗?

此外,错误指向我调用 IsEmpty() 的 main()

//.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
}

最佳答案

调用成员函数的正确方法是obj.function(...)。你需要:

cout << test.IsEmpty() << endl;   //error points to here

关于未在此范围内声明的 C++ 模板成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545766/

相关文章:

ruby - 为什么会出现未初始化常量 Stuff::HTTPParty 错误?

c++ - 来自可变参数模板的固定数量的模板参数

c++ - 具有多个实例的自动保存文件

api - Qt 命名类的方式背后的基本原理是什么?

c++ - 加速非阻塞 Unix 套接字 (C++)

java - 如何使用返回 "Class.forName(String)"作为变量的类型?

javascript - Angular2 不遍历模型数组

用于列出所有可能的模板实现的 C++ 解决方法

c++ - 前向声明类的成员函数指针

c++ - 爬取 Windows 程序菜单信息 C++