我有一个如下所示的构造函数:
RandomClass(const int16_t var1, const SecondClass& var2);
我需要将默认参数传递给第二个参数,所以目前我做了这样的事情:
RandomClass(const int16_t var1, const SecondClass& var2 = *(new SecondClass(*(new std::unordered_map<int16_t, double>())));
这真是太尴尬了。请注意,我不想使用重载的构造函数,或将第二个参数从引用更改为指针。
传递默认参数的优雅方式是什么?
最佳答案
您可以将 const 引用绑定(bind)到临时对象:
RandomClass(const int16_t var1, const SecondClass& var2 = SecondClass(std::unordered_map<int16_t, double>()));
当然,这假设您将 var2
复制到成员中,或者在构造函数退出后不使用它。如果情况并非如此,那么您的设计就有问题。也许使用原始指针或 shared/weak_ptr
更合适。
关于c++ - 将新对象作为默认参数传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13571899/