Почему мне компилятор выдаёт ошибку "undefined reference to `RightGUI::vector2::vector2()'"?
Я пытаюсь скомпилировать 2 C++ файла с помощью GCC компилятора. Корневая директория проекта "RightGUI", первый файл заголовочный расположен по "RightGUI/include/vector2.hpp" пути, второй исходный файл по "RightGUI/src/vector2.cpp", а третий с функцией "main" расположен по "RightGUI/main.cpp" пути.
"RightGUI/include/vector2.hpp":
#pragma once
#ifndef RIGHTGUI_VECTOR2_HPP
#define RIGHTGUI_VECTOR2_HPP
namespace RightGUI
{
template <typename T> class vector2
{
public:
explicit vector2();
explicit vector2(const T &x, const T &y);
const T &X() const, &Y() const;
private:
T x = 0, y = 0;
};
} // namespace RightGUI
#endif // RIGHTGUI_VECTOR2_HPP
"RightGUI/src/vector2.cpp":
#include "../include/vector2.hpp"
template <typename T> RightGUI::vector2<T>::vector2()
{
}
template <typename T> RightGUI::vector2<T>::vector2(const T &x, const T &y) : x(x), y(y)
{
}
template <typename T> const T &RightGUI::vector2<T>::X() const
{
return x;
}
template <typename T> const T &RightGUI::vector2<T>::Y() const
{
return y;
}
"RightGUI/main.cpp"
#include "include/vector2.hpp"
#include <cstdlib>
#include <iostream>
using namespace std;
int main(void){
RightGUI::vector2<int> a;
return EXIT_SUCCESS;
}
Команда компиляции:
g++ -std=c++23 -Wall -Werror -Wpedantic src/vector2.cpp main.cpp
Ошибка компилятора:
/usr/bin/ld: /tmp/ccvFmbwW.o: in function `main':
main.cpp:(.text+0x10): undefined reference to `RightGUI::vector2<int>::vector2()'
collect2: error: ld returned 1 exit status
Я никак не могу понять по какой причине компилятор выдаёт постоянно такую ошибку.