Я занимался самообучением CPP OOP, и произошла эта ошибка: Ошибка C2065 'carObj1': необъявленный идентификатор
И так как я самоучка, я пытался искать в Интернете, но ничего не нашел! Кто-нибудь может мне с этим помочь?
#include <iostream>
#include <string>
using namespace std;
class car {
public:
string brand;
string model;
int year;
void enterCar() {
cout << "\nYour car is:" << carObj1.brand << " MODEL:" << carObj1.model << " BUILT-IN:" << carObj1.year;
}
};
int main()
{
car carObj1;
cout << "Enter your car's brand name:\n";
cin >> carObj1.brand;
cout << "Enter your car's Model:\n";
cin >> carObj1.model;
cout << "Enter your car's Built-in year:\n";
cin >> carObj1.year;
carObj1.enterCar();
return 0;
}
@WhozCraig Когда мы не можем использовать его в нашей функции, так зачем нам вообще использовать объект класса?





проблема заключается в том, что вы пытаетесь получить доступ к полям brand, model и year объекта с именем carObj1, которого нет в контексте функции-члена car::enterObj.
Для решить этого вы можете либо удалить имя carObj1, чтобы можно было использовать неявный указатель this, либо вы можете явно использовать указатель this, как показано ниже:
void enterCar() {
//-------------------------------------------vvvvv-------------->equivalent to writing `this->brand`
std::cout << "\nYour car is:" << brand <<std::endl;
//-----------------------------------vvvvvv------------------->explicitly use this pointer
std::cout<< " MODEL:" << this->model << std::endl;
std::cout<<" BUILT-IN:" << this->year;
}
Также я бы рекомендовал изучать C++, используя хорошая книга по С++.
что такое this?
@EMVI this — это указатель. Дополнительные сведения см. в этот указатель и здесь. Это также объясняется в любом начальном уровне С++ книга.
В контексте
car::enterCarнетcarObj1; есть толькоthis(что подразумевается). Удалите всеcarObj1.из этой функции. Связанные, найдите самую лучшую книгу, которую вы можете. Поверьте мне; это обязательно.