在超类需要参数的地方构造不带参数的对象
Construct object without arguments where superclass requires arguments
我正在实现一个继承自超类的类。超类需要构造函数的参数。我希望子类是可实例化的,不需要参数。超类看起来像这样:
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);
这可能吗?一个类似的问题显示了创建静态方法的解决方案,该方法生成父构造函数所需的参数,但我希望有一种更简单的方法来实现它。
With:
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;
相关文章:
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Arduino C++在构造函数中用参数声明对象数组
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- C++ 类对象作为函数参数
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 如何编写将展开以定义具有模板参数的对象的宏
- C++类对象 - 遍历基于参数的对象
- 将指针传递到成员的指针,从模板参数包到函数对象
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 是否可以获取成员函数模板参数的拥有对象?
- C++多参数对象创建
- 在不创建参数对象的情况下解析constexpr函数
- 推断模板参数对象成员的类型
- 如何解析c++ v8中的参数对象
- 当默认参数对象被销毁时
- 为什么函数不能更改其参数对象的地址/引用值?