Вы создаете экземпляр 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";