gpt4 book ai didi

c++ - 当我将代码分离到头文件时的问题

转载 作者:行者123 更新时间:2023-12-04 07:58:00 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why is “using namespace std;” considered bad practice?

(39 个回答)


6 个月前关闭。




该程序运行正常,但是当我将“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 namespace std;
放置在包含标题 "Student.h" 之后
#include "iostream"
#include "string"
#include "Students.h"
using namespace std;
所以名字 string在标题 "Students.h" 中未定义.
将指令放在包含标题之前。
#include "iostream"
#include "string"
using namespace std;
#include "Students.h"
虽然包含标题会好得多 <string><iostream>在标题中 "Students.h"并使用限定名称,如 std::string .

关于c++ - 当我将代码分离到头文件时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66605230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com