gpt4 book ai didi

c++ - 在父类(super class)需要参数的情况下构造不带参数的对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:55 25 4
gpt4 key购买 nike

我正在实现一个继承自父类(super class)的类。父类(super class)需要为其构造函数提供参数。我希望子类无需参数即可实例化。父类(super class)看起来像这样:

class OtherClass {
public:
OtherClass(YetAnotherClass *yac);
};
class SuperClass {
public:
SuperClass(OtherClass *c);
};

我想做这样的事情:

class MyClass : public SuperClass {
public:
MyClass() : SuperClass(OtherClass(YetAnotherClass)) {}
};

为了避免在实例化 MyClass 的成员时必须做这样的事情:

YetAnotherClass * only_used_once = YetAnotherClass();
OtherClass * also_used_just_once = OtherClass(only_used_once);
MyClass what_i_actually_want = MyClass(also_used_just_once);

这可能吗? A similar question展示了创建静态方法的解决方案,该方法生成父构造函数所需的参数,但我希望有一种更简单的方法来实现这一目标。

最佳答案

与:

struct DataClass
{
DataClass() : yetAnotherClass(), otherClass(&yetAnotherClass) {}

YetAnotherClass yetAnotherClass;
OtherClass otherClass;
};

如果 MyClass 的每个实例都拥有另一个类,您可以执行以下操作:

class MyClass : private DataClass, public SuperClass
{
public:
MyClass() : DataClass(), SuperClass(&this->otherClass) {}
};

否则他们共享另一个类,你可以这样做:

class MyClass : public SuperClass
{
public:
MyClass() : SuperClass(&dataClass.otherClass) {}
private:
static DataClass dataClass;
};

DataClass MyClass::dataClass;

关于c++ - 在父类(super class)需要参数的情况下构造不带参数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23938394/

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