gpt4 book ai didi

c++ - 如何在没有任何运行时成本的情况下将类接口(interface)的不同部分暴露给不同的类?

转载 作者:行者123 更新时间:2023-11-30 03:28:32 26 4
gpt4 key购买 nike

<分区>

假设我有这些类:

class Bar;
class Foo {
private:
// stuff here
public:
void methodForClassBar();
};

我想做的是将 methodForClassBar 设为私有(private),这样 class Bar 仍然可以调用它。但是我不希望 class Bar 能够访问 Foo 的任何其他私有(private)成员。

我目前的解决方案是这样的:将methodForClassBar设为private,并创建一个accessor类(FooInterfaceToClassBar,这个只能被Bar访问), 它是 Foo 的友元。因此,使用这个访问器类,我可以调用 methodForClassBar:

class FooInterfaceToClassBar;

class Foo {
private:
// stuff here
private:
void methodForClassBar();

friend FooInterfaceToClassBar;
};

class FooInterfaceToClassBar {
private:
static void inline callMethod(Foo &foo) {
foo.methodForClassBar();
}

friend class Bar;
};

void Bar::someMethod(Foo &foo) {
FooInterfaceToClassBar::callMethod(foo);
}

是否有其他/更好(更方便)的方法来实现这一点,而不需要任何运行时性能成本(我想避免添加带有虚拟方法的接口(interface))?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com