尽管包含头文件,但编译错误 Class 'does not name a type'
Compling error Class 'does not name a type' dispite header file being included
我是 C++ 语言的初学者,运行 遇到了一个编译错误,这个错误困扰了我好几天的最新作业。
该代码使用 class GradeBook 来设置课程名称和教师姓名。
这是驱动程序文件,其中包含包含 class GradeBook
的头文件
#include <iostream>
#include "GradeBook.h"
using namespace std;
int main()
{
gradeBook gradeBook1 ();
gradeBook gradeBook2 ();
cout << "Grade Book Initial Course Name: \n" << gradeBook1.getCourseName() << endl;
cout << "Initial Instructor Name: \n" << gradeBook2.getInstuctorName() << endl;
gradeBook.displayMessage();
return 0;
}
这是头文件。基于对这个问题的研究,我添加了 #ifndef 以防止可能的循环错误。
#ifndef GRADE_H
#define GRADE_H
#include <string>
#include "GradeBook.cpp"
// __Grade_Book__
class GradeBook
{
std::string courseName, instructorName;
public:
// constructor initializes courseName with string supplied an argument
GradeBook( std::string name);
//function sets the course name and limits length
void setCourseName(std::string name);
void setInstructorName(std::string iName);
//function gets the course name
std::string getCourseName();
std::string getInstructorName();
//function displays a welcome message
void displayMessage();
};
#endif
这是源文件,尽管链接到头文件,但在 GradeBook 的第一个实例中出现错误“'GradeBook' does not name a type”。我觉得好像这个文件不是完全必要的对于这段代码,但它是分配所必需的。我想知道我是否搞砸了创建循环的文件通信,但我尝试的一切都导致了相同的编译错误,坚持 class GraddeBook 尚未定义。
#include <iostream>
#include "GradeBook.h"
using namespace std;
// constructor initializes courseName with string supplied an argument
GradeBook::GradeBook(string name)
{
setCourseName(name);
setInstructorName (iName);
// call set function to initialize courseName
}
//function sets the course name
void GradeBook::setCourseName(string name)
{
if (name.length() <= 30)
courseName = name;
else
{
courseName = name.substr(0, 30); //start at 0, length of 30
cout << "Course Name \" " << name << "\" exceeds maximum length (30).\n"
<< "Limiting courseName to the first 30-characters.\n" << endl;
}
}
void GradeBook::setInstuctorName(string iName)
{
if (iName.length() <= 20)
instructorName = iName;
else
{
instructorName = iName.substr(0, 30); //start at 0, length of 30
cout << "Instructor Name \" " << iName << "\" exceeds maximum length (20).\n"
<< "Limiting Instructor Name to the first 20-characters.\n" << endl;
}
}
//function gets the course name
string GradeBook::getCourseName()
{
return courseName;
}
string GradeBook::getInstructorName()
{
return InstructorName;
}
//function displays a welcome message
void GradeBook::displayMessage()
{
cout << "Welcome to the Grade book for: \n" << getCourseName() << endl;
cout << "This course is presented by: \n" << getInstructorName() << endl;
}
请务必在声明变量时使用正确的类名。标识符区分大小写。
GradeBook gradeBook1;
GradeBook gradeBook2;
我是 C++ 语言的初学者,运行 遇到了一个编译错误,这个错误困扰了我好几天的最新作业。 该代码使用 class GradeBook 来设置课程名称和教师姓名。
这是驱动程序文件,其中包含包含 class GradeBook
的头文件#include <iostream>
#include "GradeBook.h"
using namespace std;
int main()
{
gradeBook gradeBook1 ();
gradeBook gradeBook2 ();
cout << "Grade Book Initial Course Name: \n" << gradeBook1.getCourseName() << endl;
cout << "Initial Instructor Name: \n" << gradeBook2.getInstuctorName() << endl;
gradeBook.displayMessage();
return 0;
}
这是头文件。基于对这个问题的研究,我添加了 #ifndef 以防止可能的循环错误。
#ifndef GRADE_H
#define GRADE_H
#include <string>
#include "GradeBook.cpp"
// __Grade_Book__
class GradeBook
{
std::string courseName, instructorName;
public:
// constructor initializes courseName with string supplied an argument
GradeBook( std::string name);
//function sets the course name and limits length
void setCourseName(std::string name);
void setInstructorName(std::string iName);
//function gets the course name
std::string getCourseName();
std::string getInstructorName();
//function displays a welcome message
void displayMessage();
};
#endif
这是源文件,尽管链接到头文件,但在 GradeBook 的第一个实例中出现错误“'GradeBook' does not name a type”。我觉得好像这个文件不是完全必要的对于这段代码,但它是分配所必需的。我想知道我是否搞砸了创建循环的文件通信,但我尝试的一切都导致了相同的编译错误,坚持 class GraddeBook 尚未定义。
#include <iostream>
#include "GradeBook.h"
using namespace std;
// constructor initializes courseName with string supplied an argument
GradeBook::GradeBook(string name)
{
setCourseName(name);
setInstructorName (iName);
// call set function to initialize courseName
}
//function sets the course name
void GradeBook::setCourseName(string name)
{
if (name.length() <= 30)
courseName = name;
else
{
courseName = name.substr(0, 30); //start at 0, length of 30
cout << "Course Name \" " << name << "\" exceeds maximum length (30).\n"
<< "Limiting courseName to the first 30-characters.\n" << endl;
}
}
void GradeBook::setInstuctorName(string iName)
{
if (iName.length() <= 20)
instructorName = iName;
else
{
instructorName = iName.substr(0, 30); //start at 0, length of 30
cout << "Instructor Name \" " << iName << "\" exceeds maximum length (20).\n"
<< "Limiting Instructor Name to the first 20-characters.\n" << endl;
}
}
//function gets the course name
string GradeBook::getCourseName()
{
return courseName;
}
string GradeBook::getInstructorName()
{
return InstructorName;
}
//function displays a welcome message
void GradeBook::displayMessage()
{
cout << "Welcome to the Grade book for: \n" << getCourseName() << endl;
cout << "This course is presented by: \n" << getInstructorName() << endl;
}
请务必在声明变量时使用正确的类名。标识符区分大小写。
GradeBook gradeBook1;
GradeBook gradeBook2;