【问题标题】:c++ Multiple parents with same variable namec ++具有相同变量名的多个父项
【发布时间】:2012-08-28 14:49:12
【问题描述】:
class A{
    protected:
    int var;
};

class B{
    protected:
    int var;
};

class C : public A, public B {};

这里发生了什么?变量合并了吗?我可以具体调用一个吗,例如 B::var = 2 等。

【问题讨论】:

  • 您是否尝试过您建议的语法 (B::var)?它恰好是正确的!

标签: c++ inheritance multiple-inheritance


【解决方案1】:

C 类将有两个变量,B::varA::var。在C 之外,您可以像这样访问它们(如果您更改为public:),

C c;
c.A::var = 2;

尝试访问c.var会导致错误,因为没有名称为var的字段,只有A::varB::var

C 内部,它们的行为类似于常规字段,同样,名称为 A::varB::var

【讨论】:

    【解决方案2】:

    您可以分别通过A::varB::var 在C 类中访问它们。

    Here 是涵盖相同问题的链接。

    【讨论】:

      【解决方案3】:

      如果你只在C 中引用var,编译器不知道你是指A::var 还是B::var,编译器会告诉你var 是模棱两可的。因此,在使用var 时,您必须完全限定名称。

      不会发生合并,C 的任何实例都将包含这两个变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        • 2011-04-14
        相关资源
        最近更新 更多