调用简单继承方法时,“表达式必须具有类类型”

时间:2016-11-15 21:49:01

标签: c++ oop

你们有什么提示我的代码有什么问题吗?我已尽可能简单,并尝试搜索谷歌,但仍然不知道。

#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;
}    

1 个答案:

答案 0 :(得分:5)

信不信由你Dog doggy();声明一个函数名doggy。它按值返回Dog,并且不接受任何参数。

要修改它,在使用自动存储定义对象时,请勿使用括号(如果没有任何参数可以使用)。只做Dog doggy;。或者,您可以在c ++ 11及更高版本中以Dog doggy{};

执行此操作