Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未定义对“MyLinkedList”的引用<;int>;::MyLinkedList(int)和#x27; 我是C++的新手,我尝试实现我自己的链表,而我在下面的代码中得到这个问题。_C++_Templates_C++14 - Fatal编程技术网

未定义对“MyLinkedList”的引用<;int>;::MyLinkedList(int)和#x27; 我是C++的新手,我尝试实现我自己的链表,而我在下面的代码中得到这个问题。

未定义对“MyLinkedList”的引用<;int>;::MyLinkedList(int)和#x27; 我是C++的新手,我尝试实现我自己的链表,而我在下面的代码中得到这个问题。,c++,templates,c++14,C++,Templates,C++14,main.cpp #include <iostream> #include <string> #include "headers/heder.h" using namespace std; int main() { MyLinkedList<int> integ = new MyLinkedList<int>(3); MyLinkedList<string> third ("Cookie", nullptr)

main.cpp

#include <iostream>
#include <string>
#include "headers/heder.h"

using namespace std;

int main() {


    MyLinkedList<int> integ = new MyLinkedList<int>(3);


    MyLinkedList<string> third ("Cookie", nullptr);
    MyLinkedList<string> second ("likes", &third);
    MyLinkedList<string> first ("James", &second);

    MyLinkedList<string>* selected = &first;

    while (selected->getNext() != NULL){
        cout << selected->getNext()->getValue() << " ";
        selected = selected->getNext();
    }


    return 0;
}
#包括
#包括
#包括“标题/heder.h”
使用名称空间std;
int main(){
MyLinkedList integ=新的MyLinkedList(3);
MyLinkedList第三(“Cookie”,nullptr);
MyLinkedList第二名(“喜欢”和第三名);
MyLinkedList第一名(“詹姆斯”和第二名);
MyLinkedList*已选定=&first;
while(选中->getNext()!=NULL){
cout getNext()->getValue()getNext();
}
返回0;
}
海德尔

template <class T>
class MyLinkedList {
    T value;
    MyLinkedList* next;

public:

    MyLinkedList *getNext() const;

    void setNext(MyLinkedList *next);

    T getValue() const;

    void setValue(T value);


    MyLinkedList(T value, MyLinkedList *next);

    MyLinkedList(T value);

    MyLinkedList(MyLinkedList *next);
};

模板
类MyLinkedList{
T值;
MyLinkedList*下一步;
公众:
MyLinkedList*getNext()常量;
void setNext(MyLinkedList*next);
T getValue()常量;
无效设定值(T值);
MyLinkedList(T值,MyLinkedList*next);
MyLinkedList(T值);
MyLinkedList(MyLinkedList*next);
};
heder.cpp


template<class T>
T MyLinkedList<T>::getValue() const {
    return value;
}

template<class T>
void MyLinkedList<T>::setValue(T value) {
    MyLinkedList::value = value;
}

template<class T>
MyLinkedList<T> *MyLinkedList<T>::getNext() const {
    return next;
}

template<class T>
void MyLinkedList<T>::setNext(MyLinkedList *next) {
    MyLinkedList::next = next;
}

template<class T>
MyLinkedList<T>::MyLinkedList(T value, MyLinkedList *next):value(value), next(next) {}

template<class T>
MyLinkedList<T>::MyLinkedList(T value):value(value) { next = NULL; }

template<class T>
MyLinkedList<T>::MyLinkedList(MyLinkedList *next): next(next) { &value = NULL; }

模板
T MyLinkedList::getValue()常量{
返回值;
}
模板
void MyLinkedList::setValue(T值){
MyLinkedList::value=value;
}
模板
MyLinkedList*MyLinkedList::getNext()常量{
下一步返回;
}
模板
void MyLinkedList::setNext(MyLinkedList*next){
MyLinkedList::next=next;
}
模板
MyLinkedList::MyLinkedList(T值,MyLinkedList*next):值(值),下一个(下一个){
模板
MyLinkedList::MyLinkedList(T值):值(值){next=NULL;}
模板
MyLinkedList::MyLinkedList(MyLinkedList*next):next(next){&value=NULL;}
为什么我会得到他的错误:

CMakeFiles\untitled.dir/objects.a(main.cpp.obj): In function `main':
C:/Users/mstele/CLionProjects/untitled/main.cpp:24: undefined reference to `MyLinkedList<int>::MyLinkedList(int)'
C:/Users/mstele/CLionProjects/untitled/main.cpp:24: undefined reference to `MyLinkedList<int>::MyLinkedList(MyLinkedList<int>*)'
C:/Users/mstele/CLionProjects/untitled/main.cpp:27: undefined reference to `MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::MyLinkedList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*)'
C:/Users/mstele/CLionProjects/untitled/main.cpp:28: undefined reference to `MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::MyLinkedList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*)'
C:/Users/mstele/CLionProjects/untitled/main.cpp:29: undefined reference to `MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::MyLinkedList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*)'
C:/Users/mstele/CLionProjects/untitled/main.cpp:33: undefined reference to `MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::getNext() const'
C:/Users/mstele/CLionProjects/untitled/main.cpp:34: undefined reference to `MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::getNext() const'
C:/Users/mstele/CLionProjects/untitled/main.cpp:34: undefined reference to `MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::getValue() const'
C:/Users/mstele/CLionProjects/untitled/main.cpp:35: undefined reference to `MyLinkedList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::getNext() const'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [CMakeFiles\untitled.dir\build.make:100: untitled.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:72: CMakeFiles/untitled.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:84: CMakeFiles/untitled.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:117: untitled] Error 2
cmakfiles\untitled.dir/objects.a(main.cpp.obj):在函数“main”中:
C:/Users/mstele/CLionProjects/untitled/main.cpp:24:MyLinkedList::MyLinkedList(int)的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:24:MyLinkedList::MyLinkedList(MyLinkedList*)的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:27:MyLinkedList::MyLinkedList(std:u cx11::basic_string,MyLinkedList*)的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:28:MyLinkedList::MyLinkedList(std:u cx11::basic_string,MyLinkedList*)的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:29:MyLinkedList::MyLinkedList(std:u cx11::basic_string,MyLinkedList*)的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:33:对“MyLinkedList::getNext()const”的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:34:对“MyLinkedList::getNext()const”的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:34:对“MyLinkedList::getValue()const”的未定义引用
C:/Users/mstele/CLionProjects/untitled/main.cpp:35:对“MyLinkedList::getNext()const”的未定义引用
collect2.exe:错误:ld返回了1个退出状态
mingw32 make.exe[3]:***[CMakeFiles\untitled.dir\build.make:100:untitled.exe]错误1
mingw32 make.exe[2]:***[CMakeFiles\Makefile2:72:CMakeFiles/untitled.dir/all]错误2
mingw32 make.exe[1]:***[CMakeFiles\Makefile2:84:CMakeFiles/untitled.dir/rule]错误2
mingw32-make.exe:**[Makefile:117:无标题]错误2

我还没有在stackoverflow上找到任何类似的答案,因此如果有人能帮助我,我将非常高兴。

您必须将heder.cpp的全部内容移动到heder.h中。模板定义必须在使用它们的位置可见,即在main.cpp中。这与非模板函数不同

我看不出答案。。。我看过这篇文章。@PiotrSkotnicki你能引用一下吗something@uk1234321第一个答案涵盖了你需要知道的一切。