VS 2008 で次のようなコードを書くと:
.h
struct Patterns {
string ptCreate;
string ptDelete;
string ptDrop;
string ptUpdate;
string ptInsert;
string ptSelect;
};
class QueryValidate {
string query;
string pattern;
static Patterns pts;
public:
friend class Query;
QueryValidate(const string& qr, const string& ptn):
query(qr), pattern(ptn) {}
bool validate() {
boost::regex rg(pattern);
return boost::regex_match(query, rg);
}
virtual ~QueryValidate() {}
};
次に、次のように構造を初期化します。
.cpp
string QueryValidate::pts::ptCreate = "something";
string QueryValidate::pts::ptDelete = "something";
//...
コンパイラは次のエラーを返します。
'Patterns': '::' の左側の記号は型でなければなりません 'ptSelect' : 'QueryValidate' のメンバーではありません
私は何を間違っていますか?これは Visual Studio または私のコードの問題ですか? const 以外の静的メンバーは、宣言されたクラスの外部で定義する必要があることを知っています。