enum
(許可されたパラメータを使用)でクラス(C++)を実装しようとしています。私は実用的な解決策を得ましたが、機能を拡張しようとすると、私は立ち往生します。文字列を持つクラスの列挙型
ヘッダdata_location.hpp
class DataLocation
{
private:
public:
enum Params { model, period };
std::string getParamString(Params p);
};
プログラムdata_location.cpp
string DataLocation::getParamString(Params p){
static const char * ParamsStrings[] = {"MODEL", "PERIOD"};
return ParamsStrings[p];
}
アレイIが(逆関数を用いて)第二の方法を必要とするのでParamsStrings
はenum
値を返す、クラスで一般的に利用可能であるべきであるが与えられます文字列。
私は、ヘッダーに配列を定義しようとすると、私はエラーを取得する:
in-class initialization of static data member ‘const char* DataLocation::ParamsStrings []’ of incomplete type
なぜタイプが不完全な?コンパイラは、配列内の文字列を確実に数えることができますか?
私のコードを動作させる方法がない場合は、別の方法がありますか? 1)XMLなし。 2)文字列の二重定義なし。 3)クラス外ではない。 4)コード化されたマッピングではない。
あなたは、ヘッダの配列を宣言しなければならない、そして、それを定義しますcpp。 – Zereges
あなたの質問は "どのように静的なクラスメンバーを定義するのですか?"既存のコードが十分にある。また、エラーメッセージを説明したい場合は、完全な(ただし最小限の)サンプルコードを提供してください。 –
コメントありがとうございます。あなたは正しいです、@ blazsからの答えに私のコメントを参照してください – LiPo