當我在VS 2008中這樣寫代碼:
爲什麼我不能在VS2008的類中使用靜態成員,例如靜態結構?
.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";
//...
編譯器提供了以下錯誤:
「模式':'::'左側的符號必須是'ptSelect'類型 :不是'QueryValidate'的成員
我在做什麼錯?這是Visual Studio或我的代碼問題嗎?我知道靜態成員除了常量之外,必須在它們聲明的類之外定義。
哎呀 - 對不起,去除一些代碼示例。感謝您修復Rich B. – 2008-11-07 16:52:18