【发布时间】:2016-01-15 04:19:18
【问题描述】:
我有这个代码,它给了我这个错误:
“ToolongString”标记之前的预期类型说明符。
#include <iostream>
#include "student.h";
#include <exception>
using namespace std;
int main()
{
student stud1;
int a,b;
string c,d;
cout<<"Enter the First Name"<<endl;
cin>>c;
try
{
stud1.setFirstName(c);
cout<<"Family Name: "<<stud1.getFirstName()<<endl;
}
catch (ToolongString ex1)//error
{
cout<< ex1.ShowReason() <<endl;
}
return 0;
}
这是 TooLongString 类:
class ToolongString{
public:
char *ShowReason()
{
return "The name is too long";
}
};
我有一个这样的班级学生的头文件:
#ifndef STUDENT_H
#define STUDENT_H
#include <string>
#include <iostream>
using namespace std;
class student
{
public:
student();
virtual ~student();
int studentId,yearOfStudy;
string firstName,familyName;
void setFirstName(string name);
void setFamilyName(string surname);
void setStudentId(int id);
void setYearOfStudy(int year);
string getFirstName();
string getFamilyName();
int getStudentId();
int getYearOfStudy();
};
#endif /
在 student.cpp 文件中,我还有其他类似的例外情况。
【问题讨论】:
-
您没有向我们展示完整的源文件,但我没有看到
}的结束main。 -
可能编译器在您尝试捕获它时不知道类 ToolongString。您需要在 main 之前声明它,可能在头文件中。
-
ShowReason函数自 C++11 起是非法的,它应该返回char const * -
抱歉信息不正确。现在我添加了除了 student.cpp 文件之外的所有内容