@nualua

Почему возникает undefined reference?

Здравствуйте, имеется следующая структура проекта:
main.cpp
Foo.hpp
Foo.cpp


Foo.hpp:
#pragma once

template<typename T>
class Foo
{
private:
    int size;
public:
    Foo();
};


Foo.cpp:
#include "Foo.hpp"

template<typename T>
Foo<T>::Foo()
{
    this->size = 0;
}


main.cpp:
#include "Foo.hpp"

int main()
{
    Foo<int> foo;

    return 0;
}


Компилирую следующей командой:
g++ Foo.cpp main.cpp
Компилятор отдает:
/usr/bin/ld: /tmp/cc35sAwy.o: in function `main':
main.cpp:(.text+0x1f): undefined reference to `Foo::Foo()'
collect2: error: ld returned 1 exit status


Почему такое происходит?
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Реализация методов шаблонных классов должна быть в заголовочном файле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы