Есть ли у вас какие-либо намеки на то, что не так с моим кодом? Я сделал это как можно проще и попытался выполнить поиск по всему Google, но до сих пор не знаю.«Выражение должно иметь тип класса» при вызове простого унаследованного метода
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Animal {
public:
Animal();
Animal(string _sound) :
sound(_sound) {}
virtual ~Animal();
void give_sound() {
cout << sound << " ";
}
protected:
string sound;
};
class Dog : protected Animal {
public:
Dog(): Animal("woof") {}
};
int main() {
Dog doggy();
doggy.give_sound(); // expression must have class type
return 0;
}
Используйте новый универсальный синтаксис инициализатора: 'Dog doggy {};' –
Все исправлено [здесь] (http: //coliru.stacked-crooked .com/а/0be113f40bce9bd6). –