0
#include <utility>
class C {
   private:
     const std::pair<int,int> corner1(1,1);
};

GCC 报告错误:数字常量之前的预期标识符。

我需要在它声明的那一刻构造对象,因为它是 const,但我似乎无法获得正确的语法。

4

2 回答 2

1

我需要在它声明的那一刻构造对象,因为它是 const,但我似乎无法获得正确的语法。

不,您只能在构造函数初始化程序列表中初始化非整数类型 - const 与否(至少在 C++11 之前):

class C {
   private:
     const std::pair<int,int> corner1;
     C() : corner1(1,1) {}
};

但是在我看来,您不需要在每个实例中都复制该成员,因此我只需将其设为静态即可:

class C {
   private:
     static const std::pair<int,int> corner1;
};

//implementation file:
const std::pair<int,int> C::corner1(1,1);
于 2012-08-08T03:36:02.417 回答
0

如果你通过-std=c++11并且你使用的是更新版本的 gcc,你可以这样做:

class C {
   private:
     const std::pair<int,int> corner1{1,1}; // Note curly braces
};
于 2012-08-08T03:46:20.317 回答