c++ - 对象的 Range Base 循环

标签 c++ c++11

您好,我想对对象使用范围基循环,但它似乎不起作用。这是我的代码:

#include <iostream>
#include <vector>

using namespace std;

class animal 
{
    public:
        animal ();
        void speak() {cout << "hi" ;}
};

int main()
{
    animal a;
    animal b;
    animal c;
    for ( animal * ptr : { &a , &b , &c } )
    {
        ptr->speak();
    }
}

最佳答案

您需要为您的构造函数提供一个定义:

animal () { }

或者删除它,因为它什么都不做。编译器会为您提供一个。

关于c++ - 对象的 Range Base 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20552033/

相关文章:

c++ - 我可以从手动模板实例化中排除一些方法吗?

c++ - bool 类型的默认构造函数值

c++ - 直接访问唯一的类数据成员

c++ - 针对 libstdc++.so.5 进行编译未找到符号 @GLIBCPP_3.2

c++ - macport 使用哪个编译器?

c++ - g++ 4.8.5 : does not give a valid preprocessing token using ##

c++ - 如何在 C++ 模板中使用类作为参数

c++ - 从 lambda 捕获有效变量

c++ - 查找要合并的一组包以等于给定的包

c++ - STL 有序容器如何知道它们的结束?