gpt4 book ai didi

c++ - 对从给定父类(super class)继承的所有类调用虚函数

转载 作者:行者123 更新时间:2023-11-27 22:38:57 25 4
gpt4 key购买 nike

我正在尝试在我的 C++ 应用程序中实现用户默认设置。为此,我创建了一个接口(interface)类,其中包含一个函数:

class IRegisterUserDefaults
{
public:
IRegisterUserDefaults();
virtual void registerUserDefaults(){}
};

每个继承自该接口(interface)类的类都会实现注册需要设置的用户默认值的功能。

到目前为止没有问题。但是最好的调用方式是什么?我来自 Objective-C,在那里我可以搜索所有类并找到实现接口(interface)并调用 registerUserDefaults 函数的类。我知道 C++ 没有这种级别的内省(introspection)。每个类调用一次函数就足够了(因此使其成为静态的)。

目标

如果一个类继承 IRegisterUserDefaults,那么该函数将被“自动”调用,那就太好了。我尝试从 IRegisterUserDefaults 构造函数调用该方法,但看起来这并没有正确调用子类函数。有办法实现吗?

此外,确保每个类仅调用一次的最佳方法是什么?

最佳答案

IRegisterUserDefaults任何语言中都不是一个有意义的接口(interface)。

听起来您试图解决的实际问题是“在第一次使用时或接近第一次使用时运行一些代码”。你可以用这样的东西来做到这一点

class HasUserDefaults {
static std::once_flag register_once;
void registerUserDefaults() { /*...*/ }
public:
HasUserDefaults ()
{
// in all the constructors
std::call_once(register_once, &HasUserDefaults::registerUserDefaults, this);
}

// other members
};

关于c++ - 对从给定父类(super class)继承的所有类调用虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697426/

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