为什么我们不能在Struct C ++中使用硬编码或初始化值?

时间:2015-02-09 05:40:11

标签: c++ struct

struct tester 
{
    int pt;
    int bt=25;  <--- this lines gives an error why ?
} one;

3 个答案:

答案 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
    }