C++ 如何在不访问原始成员的情况下引用班级成员的成员



嗨,我知道标题有点难理解,那只是因为我不知道如何表达这个问题。幸运的是,我可以提供一个简单易懂的例子来说明我的问题。想象一个基础class A派生的class B和不相关的class C设置如下:

class A
{
public:
};
class B : public A
{
public:
C c;
};
class C
{
public:
void foo();
};

我想知道如何使用class B的对象调用foo()而不执行以下操作:

B b;
b.c.foo();

而是这个:

B b;
b.foo();

此外,我不想从class C继承或复制class C's函数。通过简单的实现,这可能吗?谢谢

您的约束意味着您的示例没有意义,除非函数foo是静态的;如果不是,那么在foo有意义之前,您需要提供有关您正在使用的C实例的信息;因此提及CCD_ 11将是必不可少的。如果它是静态的,则C::foo工作,但b.foo()不工作。如果您想要B的一个调用b.c.foo()的成员函数,那么您应该按照上面的建议编写一个。

也许你打算私下继承B:中的C

class B : private C , public A
{
public:
using C::foo;
};

会成功的。

相关内容

最新更新