当我将代码分离到头文件时出现问题
problem when I separate code to header file
该程序可以正常工作,但是当我将“Class StudentsName”分开并将其放在头文件中时,它无法正常工作。我通过右键单击头文件文件夹并选择新项目和选择头文件在我的项目中添加头文件,但它不能正常工作。请帮助我!
主文件:
#include "iostream"
#include "string"
#include "Students.h"
using namespace std;
int main()
{
string nameOfStudent;
StudentsName myStudentsName(" The student name is: Jason");
cout<<myStudentsName.getMyName()<<endl;
cout<<"please enter the name of the student: "<<endl;
getline(cin, nameOfStudent);
myStudentsName.setMyName(nameOfStudent);
cout<<endl;
myStudentsName.displayMyName();
system("pause");
return 0;
}
头文件(Students.h):
class StudentsName
{
public:
StudentsName (string stdName)
{
setMyName(stdName);
}
void setMyName(string stdName)
{
myName=stdName;
}
string getMyName ()
{
return myName;
}
void displayMyName()
{
cout<<"The student name is: "<<getMyName()<<endl;
}
private:
string myName;
};
错误:
students.h(5): error C2061: syntax error : identifier 'string'
students.h(9): error C2061: syntax error : identifier 'string'
students.h(13): error C2146: syntax error : missing ';' before identifier 'getMyName'
students.h(13): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
students.h(14): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
students.h(16): warning C4183: 'getMyName': missing return type; assumed to be a member function returning 'int'
students.h(23): error C2146: syntax error : missing ';' before identifier 'myName'
students.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
students.h(7): error C2065: 'stdName' : undeclared identifier
students.h(11): error C2065: 'myName' : undeclared identifier
students.h(11): error C2065: 'stdName' : undeclared identifier
students.h(15): error C2065: 'myName' : undeclared identifier
students.h(19): error C2065: 'cout' : undeclared identifier
students.h(19): error C2065: 'endl' : undeclared identifier
studentname.cpp(11): error C2664: 'StudentsName::StudentsName(const StudentsName &)' : cannot convert parameter 1 from 'const char [84]' to 'const StudentsName &'
1> Reason: cannot convert from 'const char [84]' to 'const StudentsName'
1> No constructor could take the source type, or constructor overload resolution was ambiguous
studentname.cpp(16): error C2660: 'StudentsName::setMyName' : function does not take 1 arguments
using 指令
using namespace std;
放在包括header"Student.h"
之后
#include "iostream"
#include "string"
#include "Students.h"
using namespace std;
因此名称 string
在 header "Students.h"
中未定义。
将指令放在包含 header 之前。
#include "iostream"
#include "string"
using namespace std;
#include "Students.h"
尽管在 header "Students.h"
中包含 headers <string>
和 <iostream>
并使用限定名称如 std::string
.
该程序可以正常工作,但是当我将“Class StudentsName”分开并将其放在头文件中时,它无法正常工作。我通过右键单击头文件文件夹并选择新项目和选择头文件在我的项目中添加头文件,但它不能正常工作。请帮助我!
主文件:
#include "iostream"
#include "string"
#include "Students.h"
using namespace std;
int main()
{
string nameOfStudent;
StudentsName myStudentsName(" The student name is: Jason");
cout<<myStudentsName.getMyName()<<endl;
cout<<"please enter the name of the student: "<<endl;
getline(cin, nameOfStudent);
myStudentsName.setMyName(nameOfStudent);
cout<<endl;
myStudentsName.displayMyName();
system("pause");
return 0;
}
头文件(Students.h):
class StudentsName
{
public:
StudentsName (string stdName)
{
setMyName(stdName);
}
void setMyName(string stdName)
{
myName=stdName;
}
string getMyName ()
{
return myName;
}
void displayMyName()
{
cout<<"The student name is: "<<getMyName()<<endl;
}
private:
string myName;
};
错误:
students.h(5): error C2061: syntax error : identifier 'string'
students.h(9): error C2061: syntax error : identifier 'string'
students.h(13): error C2146: syntax error : missing ';' before identifier 'getMyName'
students.h(13): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
students.h(14): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
students.h(16): warning C4183: 'getMyName': missing return type; assumed to be a member function returning 'int'
students.h(23): error C2146: syntax error : missing ';' before identifier 'myName'
students.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
students.h(7): error C2065: 'stdName' : undeclared identifier
students.h(11): error C2065: 'myName' : undeclared identifier
students.h(11): error C2065: 'stdName' : undeclared identifier
students.h(15): error C2065: 'myName' : undeclared identifier
students.h(19): error C2065: 'cout' : undeclared identifier
students.h(19): error C2065: 'endl' : undeclared identifier
studentname.cpp(11): error C2664: 'StudentsName::StudentsName(const StudentsName &)' : cannot convert parameter 1 from 'const char [84]' to 'const StudentsName &'
1> Reason: cannot convert from 'const char [84]' to 'const StudentsName'
1> No constructor could take the source type, or constructor overload resolution was ambiguous
studentname.cpp(16): error C2660: 'StudentsName::setMyName' : function does not take 1 arguments
using 指令
using namespace std;
放在包括header"Student.h"
#include "iostream"
#include "string"
#include "Students.h"
using namespace std;
因此名称 string
在 header "Students.h"
中未定义。
将指令放在包含 header 之前。
#include "iostream"
#include "string"
using namespace std;
#include "Students.h"
尽管在 header "Students.h"
中包含 headers <string>
和 <iostream>
并使用限定名称如 std::string
.