设置类成员函数的结构输入的默认值

Set default for class member function's struct input

本文关键字:结构 默认值 输入 函数 成员 设置      更新时间:2023-10-16

我有以下代码,并希望为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);
}