gpt4 book ai didi

初始化列表中的 C++ 临时变量

转载 作者:IT老高 更新时间:2023-10-28 22:36:26 26 4
gpt4 key购买 nike

在 C++ 中,有没有办法在初始化列表中包含临时变量之类的东西。我想用相同的实例初始化两个常量成员,而不必将其传递进去,删除 const 要求,使用工厂(即传递它但让工厂生成它以对 API 用户隐藏它),或者让 temp 实际上是一个成员变量。

即像

Class Baz{
const Foo f;
const Bar b;
Baz(Paramaters p):temp(p),f(p,temp),b(p,temp){ //temp is an instance of Something
// But NOT A member of Baz
// Whatever
}
}

而不是

Class Baz{
Foo f;
Bar b;
Baz(Paramaters p){
Something temp(p);
f = Foo(p,temp)
b = Bar(p,temp)
}
}

Class Baz{
Foo f;
Bar b;
Baz(Paramaters p,Something s):f(p,s),b(p,s){
}
}

最佳答案

在 C++11 中,您可以使用委托(delegate)构造函数:

class Baz{
const Foo f;
const Bar b;
Baz(Paramaters p) : Baz(p, temp(p)) { } // Delegates to a private constructor
// that also accepts a Something
private:
Baz(Paramaters p, Something const& temp): f(p,temp), b(p,temp) {
// Whatever
}
};

关于初始化列表中的 C++ 临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375114/

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