gpt4 book ai didi

c++ - 使用委托(delegate)构造函数重新初始化

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:37 25 4
gpt4 key购买 nike

我有这个类 X,使用委托(delegate)构造函数我只想将值 ij 更改为 0。是否可以这样做?

class X{
public:
X() = default;
X(int ival, int jval) : i{ ival }, j{ jval } {}
X(int new_i) : i{ new_i }, X(i, 0) {} //error here


private:
int i;
int j;
};

int main()
{
X x{ 345, 54 };

x = X{ 34 }; //annoymous copy changes only the i:member
return 0;
}

编辑:我知道 X(int new_int) : X{new_int, 0} 会起作用,但我想知道如果在列表中再初始化一个变量会出现什么错误。

可能是我有另一个 z,我想将其与 ij 一起初始化。

X(int new_i) :z{ new_i }, X(new_i, 0) {}

最佳答案

就用

X(int new_i) :  X(new_i, 0) {}

来自 C++ 草案标准 N3337(强调我的):

12.6.2 Initializing bases and members

6 A mem-initializer-list can delegate to another constructor of the constructor’s class using any class-or-decltype that denotes the constructor’s class itself. If a mem-initializer-id designates the constructor’s class, it shall be the only mem-initializer;

关于c++ - 使用委托(delegate)构造函数重新初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28772610/

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