为什么我不能访问该课程的成员? [英] Why can't I access a member of this class?

查看:73
本文介绍了为什么我不能访问该课程的成员?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下三个类定义:

class String
{
    public:
        String() {}
        String(const char *) {}
};

class ClassA
{
    public:
        ClassA(const String &) {}
};

class ClassB
{
    public:
        ClassB(const ClassA &, const String & = String()) {}
        void method() {}
};

现在假设我要创建 ClassB

String name("test");
ClassA item(ClassB(name));

这不起作用:


error: request for member 'method' in 'item', which is of non-class
  type 'ClassA ()(ClassB)'

此错误是什么意思?编译器不断引用的奇怪类型 ClassA()(ClassB)是什么?

What does this error mean? And what is this strange type ClassA ()(ClassB) the compiler keeps referring to?

推荐答案

这称为最令人头疼的解析问题

ClassA item(ClassB(name));

应该是:

ClassB b(name);
ClassA item(b);

或:

ClassA item( (ClassB(name)) );

也可以看看:大多数令人烦恼的解析:为什么不使用a(());工作吗?

这篇关于为什么我不能访问该课程的成员?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆