Я хочу создать простую программу, которая демонстрирует использование этого. Я написал функцию, которая печатает переменные x и y. Я определил функцию в верхней части файла. Я даже не знаю, зачем это нужно, но хорошо. Все идет нормально. Visual Studio не находит проблем, никаких предупреждений и ошибок. Однако, когда я компилирую этот код, я получаю следующее сообщение об ошибке:
1> D: \ Dev \ Visual Studio Projekte \ Projektmappe \ FirstProject \ src \ This. cpp (3,30): ошибка C2143: синтаксическая ошибка: отсутствует ',' перед '*' 1> D: \ Dev \ Visual Studio Projekte \ Projektmappe \ FirstProject \ src \ This. cpp (11,1): ошибка C2664: «void PrintObject (const int)»: невозможно преобразовать аргумент 1 из «Object *» в 'const int'
Теперь в какой-то момент я также получил ошибку, что не определен конструктор по умолчанию. Однако компилятор предоставляет одно право? Затем я просто повторно набрал код, и ошибка исчезла. Просто то, что я хотел упомянуть, тоже казалось глупым. Так почему же компилятор думает, что «this» ссылается на «const int», когда он фактически ссылается на мой объект?
#include <iostream>
void PrintObject(const Object* o);
class Object {
public:
int x, y;
Object(int x, int y)
: x(x), y(y) {
PrintObject(this);
}
int GetX() const {
return this->x;
}
int GetXy() const {
return x;
}
};
void PrintObject(const Object* o) {
std::cout << o->x << ", " << o->y << std::endl;
}
int main() {
std::cin.get();
return 0;
}