我刚开始学习c ++。我在赋值中有一个问题:使用main()函数考虑以下类声明。 main()函数中有两个错误。为他们命名并解释如何修复它们。
//Question Three Start
#include <iostream>
#include <string>
using namespace std;
class Restaurant
{
public:
Restaurant();
int getTables();
int getTempStaff();
int getPermStaff();
string getShifts();
private:
string Menu;
int Tables;
int TempStaff;
int PermStaff;
string Shifts[3];
};
int main()
{
Restaurant mimmos;
//.........(additional code)
string menu = mimmos.Menu;
//.........(additional code)
//get information about shift 3
cout << "Shift info:" << mimmos[2].getShifts() << endl;
return 0;
}
我知道第一个问题是成员变量Menu是私有的,但我不知道如何解决mimmos [2] .getShifts()的问题以及如何使用accessor / mutator函数。任何帮助将不胜感激。
答案 0 :(得分:0)
您正确识别的第一个是由访问私有成员引起的。修复?返回菜单的公共成员函数:
string getMenu();
第二种是无效的对待mimmos&#39;作为一个数组,当事实上它是一个单一的实例。由于上面的评论表明它是试图获得有关第三班的信息。你有两个选择:改变&#34; getShifts&#34;函数获取索引参数:
string getShift(size_t n) {
return Shifts[n];
}
然后你会通过写下来获得关于第3班的信息:
cout << "Shift info: " << mimmos.getShift(2) << std::endl;
或者更改getShifts()以返回数组指针:
string* getShifts();
然后你会写:
cout << "Shift info: " << mimmos.getShifts()[2] << std::endl;
答案 1 :(得分:0)
此代码存在树问题:
string menu = mimmos.Menu;
菜单在餐厅课程中被宣布为私人。
Restaurant mimmos;
//get information about shift 3
cout << "Shift info:" << mimmos[2].getShifts() << endl;
“mimmos”是单个对象而不是数组。在这种情况下,方括号运算符“[]”用于访问数组成员。
另外根据上面的评论说:“获取有关班次3的信息”
您想要访问班次号码3,但“getShifts”函数的返回类型是单字符串对象。因此,即使您将方括号移到函数前面:
cout << "Shift info:" << mimmos.getShifts()[2] << endl;
您将获得一个char(字符串的第3个字符)。
答案 2 :(得分:-1)
因为您只创建Restaurant
课程的单个对象,而不是array
,因此您无法使用index
。
您应该使用如下
cout << "Shift info:" << mimmos.getShifts() << endl;
另外,要访问private
变量,请展示public
方法,该方法将返回Menu
字段。
希望这有帮助。