Когда я пишу код, как это в 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 или с моим кодом? Я знаю, что статические члены, за исключением const, должны быть определены вне класса, в котором они были объявлены.
К сожалению, - извините за удаление некоторых из примера кода. Спасибо за исправление Rich B. – 2008-11-07 16:52:18