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 に答える