设置类成员函数的结构输入的默认值
Set default for class member function's struct input
我有以下代码,并希望为param3提供默认值。我尝试过各种尝试,编译器的错误消息似乎是说类中不允许进行非int初始化。这是一种糟糕的做法吗?为什么?从OO的角度来看,什么是更好的方法
感谢
struct MyStruct
{
int a;
int b;
};
class myClass {
public:
void init(int param1 = 0, int param2 = 0, MyStruct param3);
}
您可以添加一个构造函数和一个默认构造函数MyStruct
,并生成一个常量默认值,如下所示:
struct MyStruct {
int a;
int b;
MyStruct(int x, int y):a(x), b(y) {} // Constrctor.
MyStruct():a(0), b(0) {} // Default constrctor.
};
const MyStruct default_(3, 4); // for instance here by default a == 3 and b == 4
class myClass {
public:
void init(int param1 = 0, int param2 = 0, MyStruct param3 = default_);
};
以下内容将起作用(至少在C++11中):
void init(int param1 = 0, int param2 = 0, MyStruct param3 = MyStruct{ 2, 3 });
这将在C++0x中工作。
struct MyStruct
{
int a;
int b;
};
function foo(int a, structure s = structure{10,20})
{
//Code
}
解决这样的问题最简单、最清晰的方法可能是这样做:
class myClass {
public:
void init(int p1 = 0, int p2 = 0)
{
MyStruct s; //initialize this to whatever default values
init(p1, p2, s);
}
void init(int p1, int p2, MyStruct p3);
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 具有默认值的引用获取函数
- 当给定默认值时,为什么此模板参数推导失败
- C++结构默认调用值
- 实例化时结构字段中的默认值
- 了解具有显式和默认值C++结构
- Boost.Spirit.Qi 语法,用于 Boost.Fusion 自适应结构中的默认值
- 在结构C++,构造函数中的默认值和默认参数有什么区别
- 如何将结构变量初始化为默认值
- Corba IDL:结构成员的默认值
- 为什么 MSVC 和 GCC 不能使用具有默认值的字段初始化结构
- 结构成员的默认值
- 如何使用默认值定义结构
- 类内定义的静态结构的静态成员的编译时默认值
- 设置类成员函数的结构输入的默认值
- 初始化结构体中的默认值
- 带默认值的结构体的大括号(聚合)初始化
- 结构的数组成员的默认值
- C++结构中指针的默认值
- 结构体中成员的默认值