你们有什么提示我的代码有什么问题吗?我已尽可能简单,并尝试搜索谷歌,但仍然不知道。
#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;
}
答案 0 :(得分:5)
信不信由你Dog doggy();
声明一个函数名doggy
。它按值返回Dog
,并且不接受任何参数。
要修改它,在使用自动存储定义对象时,请勿使用括号(如果没有任何参数可以使用)。只做Dog doggy;
。或者,您可以在c ++ 11及更高版本中以Dog doggy{};