Здравствуйте, имеется следующая структура проекта:
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
Почему такое происходит?