When I write this code in 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() {}
};
Then I initialize my structure as follows:
.cpp
string QueryValidate::pts::ptCreate = "something";
string QueryValidate::pts::ptDelete = "something";
The compiler gives the following errors:
'Templates': the character to the left of '::' must be of type 'ptSelect': not a member of QueryValidate
What am I doing wrong? Is this a problem with Visual Studio or with my code? I know that static members, with the exception of const, must be defined outside the class in which they were declared.
source
share