struct tester
{
int pt;
int bt=25; <--- this lines gives an error why ?
} one;
答案 0 :(得分:1)
您可以在c ++ 11或更高版本中实际执行此操作。如果您需要使用当前版本本身,您应该使用构造函数(希望您知道构造函数是什么,如果不是谷歌它)
这就是你的代码应该是这样的
struct tester
{
int pt;
int bt;
tester() : bt(25) // Initializer list
} one;
可选地
struct tester
{
int pt;
int bt;
tester()
{
bt=25;
}
} one;
答案 1 :(得分:1)
你可以在C ++ 11中。您只需在gcc或clang中启用编译选项,在MSVC 2012+中默认启用它。
struct tester
{
int pt{0};
int bt{25};
} one;
如果你必须坚持使用旧的C ++,那么你需要一个构造函数 在其他答复中显示
答案 2 :(得分:0)
尽可能使用初始化列表。
初始化列表选择对象的最佳匹配构造函数,这与赋值完全不同。
#include<valarray>
struct tester
{
std::valarray<int> pt;
const std::valarray<int> bt;
tester() : pt(25) // Initialize pt to an valarray with space for
// 25 elements, whose values are uninitialized.
// Works well but may be confusing to most
// people.
, bt(0, 25) // initialize bt to an valarray of 25 zeros
}