如何在头文件中声明一个常量对

时间:2012-08-08 03:31:27

标签: c++ const std-pair

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

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

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

如果您通过-std=c++11并且使用的是更新版本的gcc,则可以执行以下操作:

class C {
   private:
     const std::pair<int,int> corner1{1,1}; // Note curly braces
};