CodeToad Forums » C++ » in vc++ 5.0, get a lot of errors when compile, like, C2501: `string` : missing decl-specifiers etc.
|
|
|
#include <string.h> // string
class Staff_member {
string nm;
public:
Staff_member(const string& name) : nm(name) {}
Staff_member(const Staff_member& x) : nm(x.nm) {}
~Staff_member() {}
Staff_member& operator=(const Staff_member& x);
const string& get_name() const { return nm; }
void set_name(const string& name) { nm = name; }
};
int main() {
Staff_member staff;
}
set up a project as win32 console application, then compile the above file, get a lot of error as follows. the string.h is in the devstudio/vc/include directory and is included into the project, but why the string cannot be found(error C2501: 'string' : missing decl-specifiers
)?
MAIN.cpp
F:\Java_Cpp\OO306\Staff\develop.h(14) : error C2501: 'string' : missing decl-specifiers
F:\Java_Cpp\OO306\Staff\develop.h(14) : error C2146: syntax error : missing ';' before identifier 'nm'
F:\Java_Cpp\OO306\Staff\develop.h(14) : error C2501: 'nm' : missing decl-specifiers
F:\Java_Cpp\OO306\Staff\develop.h(17) : error C2629: unexpected 'class Staff_member ('
F:\Java_Cpp\OO306\Staff\develop.h(17) : error C2238: unexpected token(s) preceding ':'
F:\Java_Cpp\OO306\Staff\develop.h(17) : error C2061: syntax error : identifier 'name'
F:\Java_Cpp\OO306\Staff\develop.h(17) : warning C4183: 'nm': member function definition looks like a ctor, but name does not match enclosing class
F:\Java_Cpp\OO306\Staff\develop.h(22) : error C2143: syntax error : missing ';' before '&'
F:\Java_Cpp\OO306\Staff\develop.h(22) : error C2501: 'get_name' : missing decl-specifiers
F:\Java_Cpp\OO306\Staff\develop.h(22) : warning C4183: 'get_name': member function definition looks like a ctor, but name does not match enclosing class
F:\Java_Cpp\OO306\Staff\develop.h(23) : error C2143: syntax error : missing ')' before '&'
F:\Java_Cpp\OO306\Staff\develop.h(23) : error C2059: syntax error : '&'
F:\Java_Cpp\OO306\Staff\develop.h(23) : error C2143: syntax error : missing ';' before '&'
F:\Java_Cpp\OO306\Staff\develop.h(23) : error C2501: 'name' : missing decl-specifiers
F:\Java_Cpp\OO306\Staff\develop.h(23) : error C2143: syntax error : missing ';' before ')'
F:\Java_Cpp\OO306\Staff\develop.h(23) : error C2238: unexpected token(s) preceding ';'
F:\Java_Cpp\OO306\Staff\develop.h(25) : error C2628: 'Staff_member' followed by 'void' is illegal (did you forget a ';'?)
F:\Java_Cpp\OO306\Staff\develop.h(25) : error C2065: 'ostream' : undeclared identifier
F:\Java_Cpp\OO306\Staff\develop.h(25) : error C2065: 'o' : undeclared identifier
F:\Java_Cpp\OO306\Staff\develop.h(25) : error C2664: 'Staff_member::Staff_member' : cannot convert parameter 1 from 'int' to 'const class Staff_member &'
F:\Java_Cpp\OO306\Staff\develop.h(25) : error C2143: syntax error : missing ';' before 'const'
F:\Java_Cpp\OO306\Staff\develop.h(25) : error C2143: syntax error : missing ';' before 'const'
F:\Java_Cpp\OO306\Staff\develop.h(25) : error C2143: syntax error : missing ';' before '}'
F:\Java_Cpp\OO306\Staff\develop.h(29) : error C2501: 'set' : missing decl-specifiers
F:\Java_Cpp\OO306\Staff\develop.h(29) : error C2143: syntax error : missing ';' before '<'
thanks and regards!
David
|
|
|
see the changes
#include <string> // string using namespace std;
class Staff_member {
string nm;
public: Staff_member(){}
Staff_member(const string& name) : nm(name) {}
Staff_member(const Staff_member& x) : nm(x.nm) {}
~Staff_member() {}
Staff_member& operator=(const Staff_member& x);
const string& get_name() const { return nm; }
void set_name(const string& name) { nm = name; }
};
int main() {
Staff_member staff;
} |
|
|
|
|
|
|
|
|
// |