嗨,我知道标题有点难理解,那只是因为我不知道如何表达这个问题。幸运的是,我可以提供一个简单易懂的例子来说明我的问题。想象一个基础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;
};
会成功的。