首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译"auto“类型推导,而显式类型给出错误

编译"auto“类型推导,而显式类型给出错误
EN

Stack Overflow用户
提问于 2014-07-07 02:11:40
回答 2查看 359关注 0票数 18

我正在使用Visual Studio 2012,我发现了一些奇怪的东西。我写的东西并不是我必须要在多个编译器上兼容的东西,但它可能会变得更晚(当代码放在web上时,用户不想得到编译器错误),但我不想写出错误的东西,或者只是不是本机的东西。

所以这是测试代码:

代码语言:javascript
运行
复制
class A{
    class B{
        public:
        int i;
    };
    B myB;
public:
    B& getB() { return myB; }
};

int main()
{
    A a;
    A::B& b = a.getB();
    auto& b2 = a.getB();
}

main内的第一行弹出error C2248: 'A::B' : cannot access private class declared in class 'A',而第二行正常编译。我想知道,auto应该是这样工作的,还是这是Visual Studio中的另一个bug?

我没有任何其他编译器可以用来测试它

您甚至可以编写像std::cout << b2.i << "\n";这样的东西,它可以很好地编译

根据πάνταῥεῖ的评论,我用gcc 4.8.1尝试了ideone,它是以同样的方式编译的,第一行是错误的,第二行是完全正常的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24598838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档