c++ - 我如何在 C++ (C++0x) 中使用 'auto'?

标签 c++ templates c++11 visual-c++-2008

我必须对这段代码做些什么才能使其编译,它在这条线附近刹车:

auto val = what.getObject();

#include<iostream>
using namespace std;

class CUP{
    public:
        void whatsHappening(){}
};

class MUG{
    public:
        void whatsHappening(){}
};

class CupThrower{
    public:
        CUP cp;
        CUP getObject(){ return cp;}
};

class MugThrower{
    public:
        MUG mg;
        MUG getObject(){return mg;}
};

template <typename T> void whatsHappening(T what){

    auto val = what.getObject(); //DOES NOT COMPILE
    val.whatsHappening();
}

int main(){
    CupThrower ct;
    MugThrower mt;
    whatsHappening(ct);
    whatsHappening(mt);
    return 0;
}

我是用VS2008编译的。

最佳答案

VS2008 不支持自动。使用VS2010及以后版本,或其他支持该特性的编译器。

关于c++ - 我如何在 C++ (C++0x) 中使用 'auto'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924901/

相关文章:

c++ - 交换重载算术运算符的参数

c++:为什么 'this' 不能是 nullptr?

c++ - 如何在 C++ 中为不同的迭代器 value_types 重载函数

c++ - 嵌套模板特化取决于封闭的模板参数

c++ - 如果未链接使用代码,则未定义对 g++ 中静态常量成员的引用

c++ - 如何在没有警告的情况下在 gnu++11 标准中写入 "nested if...else statement for constants"?

c++ - 函数参数的析构函数在 gcc 和 MSVC 中被不同地调用

c++ - 在模板化结构范围内使用声明模板化

google-app-engine - GAE : How to upload files to be accessed by the application?

c++ - 将指向结构的指针转换为指向该结构的唯一成员的指针