小C ++程序大约几个月

时间:2015-02-24 16:09:14

标签: c++

我必须创建一个程序给出一个数字(在这种情况下我必须直接输入数字而不是做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;
}

3 个答案:

答案 0 :(得分:4)

int Month::Getm(){

即,在签名中包含返回类型并删除不属于那里的m,因为它不是函数参数而是数据成员。

答案 1 :(得分:1)

问题是由于您未在初始声明中指定Getmint)的返回类型。此外,您忘记指定传递给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;
  }
}