Мне нужно создать шаблон для двух точек (x
и y
). Компилятор говорит, что переменные являются «необъявленными идентификаторами», и я не знаю почему, но я уже объявил их в конструкторе !!
Я также получаю сообщение о том, что конструктор не имеет возвращаемого типа. Что это значит?
Как я могу исправить эти ошибки?
Это код заголовка
#include <iostream>
#ifndef POINT_H
#define POINT_H
template <typename T>
class Point{
private:
T x;
T y;
public :
Point(T x, T y);
T getX();
T getY();
void setX(T xcoord);
void setY(T ycoord);
void print();
};
#endif
template <typename T>
T Point<T> :: Point(T x, T y){
xcoord = x;
ycoord = y;
}
template <typename T>
T Point<T> :: getX() {
return x;
}
template <typename T>
T Point<T> :: getY(){
return y;
}
template <typename T>
void T Point<T> :: setX( T xcoord){
x = xcoord;
}
Это основной файл
#include <iostream>
#include "point.h"
using namespace std;
int main(){
Point<int> p1(3,5);
p1.print();
return 0;
}
Обратите внимание, что код в основном файле был закомментирован при запуске консоли. Эти ошибки происходят только из заголовочного файла
Ошибки:
Переменная T в конструкторе setx имеет неполный тип , ожидается ";"
неизвестный тип "T"
дополнительная квалификация члена на члене "setx"
необъявленное использование идентификатора "x"
![image](https://i.stack.imgur.com/tqBgB.png)