метод доступа к объекту через указатель cpp - vscode error - PullRequest
0 голосов
/ 20 ноября 2018
#include <iostream>
#include <string> 
#include <sstream>
using namespace std;
class Bird{
  public:
    int A;
    Bird(int Y){A = Y;}
    int retrieve(){return A;}
} ;
int main(){
Bird * C  =new Bird(6);
cout<< C.retrieve()<<endl;
return 0;
}

Я не могу получить доступ к методу объекта (), который указывается указателем C (объект указывается C).Есть какой-либо способ сделать это .Пожалуйста, дайте мне знать. Я использую vscode V1.29.1

1 Ответ

0 голосов
/ 20 ноября 2018

Вы создаете экземпляр Bird в куче и сохраняете указатель на этот объект в переменной с именем C.Указатели должны быть разыменованы перед доступом к элементам данных или функциям-членам, например,

std::cout << C->retrieve() << "\n";

// or, as @PeteBecker has pointed out in the comments
std::cout << (*C).retrieve() << "\n";

Кроме того, не забудьте

delete C;

или даже лучше: используйте заголовок <memory> и std::make_unique, что освобождает вас от необходимости вручную очищать указатель.

#include <memory>

auto C = std::make_unique<Bird>(6);

std::cout<< C->retrieve() << "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...