我必须创建一个程序给出一个数字(在这种情况下我必须直接输入数字而不是做cin)将显示相应的月份,但我得到错误:“预期的构造函数,析构函数或类型转换在'('令牌'之前的
行月:: Getm(M){
#include <iostream>
using namespace std;
class Month
{ private:
int m;
public:
Month();
Month(int);
int Getm();
};
Month::Month(){m=1;}
Month::Getm(m){
switch(m) {
case 1 : cout << "January" <<endl; break;
case 2 : cout << "february" <<endl; break;
case 3 : cout << "March" <<endl; break;
case 4 : cout << "April" <<endl; break;
case 5 : cout << "May" <<endl; break;
case 6 : cout << "June" <<endl; break;
case 7 : cout << "July" <<endl; break;
case 8 : cout << "August" <<endl; break;
case 9 : cout << "September" <<endl; break;
case 10 : cout << "October" <<endl; break;
case 11 : cout << "November" <<endl; break;
case 12 : cout << "December" <<endl; break;
default : cout << "Invalid number" << endl;
}
}
//int dias(int){}
int main(){
Month e = Month(0);
cout << "The month is: ";
cout << e.Getm()<<endl;
return 0;
}
答案 0 :(得分:4)
写
int Month::Getm(){
即,在签名中包含返回类型并删除不属于那里的m
,因为它不是函数参数而是数据成员。
答案 1 :(得分:1)
问题是由于您未在初始声明中指定Getm
(int
)的返回类型。此外,您忘记指定传递给m
的参数Getm
的类型;但你真的想在第一时间向Getm
传递论据吗?
这里有一些问题......
首先,您需要确定实际需要Getm
做什么。你想要它打印月份的名字吗?如果是这样,你应该给它一个更好的名字(即print()
)。然而,单词 get 通常用于表示该方法应返回一些内容;在这种情况下是一个字符串。
#include <string>
并将您的Getm方法更改为:
string Month::getName() const {
switch(m) {
case 1 : return "January";
case 2 : return "February";
case 3 : return "March";
case 4 : return "April";
case 5 : return "May";
case 6 : return "June";
case 7 : return "July";
case 8 : return "August";
case 9 : return "September";
case 10 : return "October";
case 11 : return "November";
case 12 : return "December";
default : return "Invalid number";
}
}
您也没有接受整数的Month
构造函数。看起来你开始创建一个,但你没有完成它:
Month(int m) : m(m) { }
您的课程可以像这样使用:
Month m(1);
cout << "The month is: " << m.getName();
答案 2 :(得分:0)
您将成员函数Getm
声明为没有参数但返回类型为int。
int Getm();
然后你定义它伪造指定返回类型并在参数列表中使用未指定的identify m(我认为你的意思是类的数据成员m)。
Month::Getm(m){
因为函数没有返回任何内容,所以它可以被声明为
void Getm();
并定义了以下方式
void Month::Getm(){
const size_t N = 12;
const char *month[N] =
{
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
};
if ( m > 0 && m <= N )
{
cout << month[m-1] << endl;
}
else
{
cout << "Invalid number" << endl;
}
}