C++ 如何在不访问原始成员的情况下引用班级成员的成员
C++ How to Refer to a Class' Members' Members Without Accessing Original Member
嗨,我知道标题有点难理解,那只是因为我不知道如何表达这个问题。幸运的是,我可以提供一个简单易懂的例子来说明我的问题。想象一个基础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;
};
会成功的。
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在这种情况下,如何传递成员函数而不是函数?
- 在 C++ 中,默认情况下构造函数为类的数据成员提供的值是多少?
- 在单元测试中,如何在不使用 operator== 的情况下比较两个对象,这可能会错过新成员?
- 为什么std::atomic中的所有成员函数都同时出现在有volatile和没有volatile的情况下
- 在这种情况下,工会成员会调用自己的析构函数吗
- 在不复制数据的情况下,将double数组转换为只有double成员的structs数组
- 为什么不能指向指针,在没有强制转换的情况下访问结构成员?
- 如何在没有setter的情况下设置类内部类的成员变量?
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 在不编写显式 setter 的情况下修改私有类数据成员的便捷方法是什么?模板有用吗?
- 类成员在继承的情况下用作模板参数
- 为什么可以在没有实例变量的情况下访问静态回调方法中的静态成员变量?
- 如何在不创建实例的情况下获取类的方法成员的类型?
- 有没有办法在没有括号的情况下在C++中调用成员的getter/setter?
- 使用按引用调用时,不能在没有对象的情况下调用成员函数 const
- 如何在不指定不必要的模板参数的情况下使用模板类的成员类型
- 命名空间:不能在没有对象的情况下调用成员函数
- 在没有显式作用域的情况下无法访问模板基类的静态成员
- C :在没有对象实例的情况下调用非静态成员函数