#include <utility>
class C {
private:
const std::pair<int,int> corner1(1,1);
};
GCC报告错误:数字常量之前的预期标识符。
我需要在它声明的那一刻构造对象,因为它是const,但我似乎无法获得正确的语法。
答案 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
};