#include <utility>
class C {
private:
const std::pair<int,int> corner1(1,1);
};
GCC 报告错误:数字常量之前的预期标识符。
我需要在它声明的那一刻构造对象,因为它是 const,但我似乎无法获得正确的语法。
我需要在它声明的那一刻构造对象,因为它是 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);
如果你通过-std=c++11
并且你使用的是更新版本的 gcc,你可以这样做:
class C {
private:
const std::pair<int,int> corner1{1,1}; // Note curly braces
};