所以我试图用数据成员创建一个类(Version)。成员函数是setter(允许级联调用)和getter(使用PLP和处理常量对象)。在int main中,它允许用户输入数字,然后它需要对一个语句中的所有数据成员使用级联成员函数调用,并通过调用getter显示版本并让它们只返回数据成员的值。
我几乎把所有内容编码,但我觉得我错过了一个步骤或者做了一些错误的参数。我的错误说我需要一个')'对于我的安装人员,但我觉得这是一个不同的问题。我没有得到关于如何做到这一点的所有笔记,所以有人可以告诉我我缺少什么或需要解决的问题吗?谢谢!
#include<iostream>
using namespace std;
class Version
{
private:
int major, minor, service_pack;
public:
Version();
Version& setMajor(int maj);
Version& setMinor(int min);
Version& setService_pack(int sp);
int getMinor(Version *const this);
int getMajor(Version* const this);
int getService_pack(Version* const this);
};
Version::Version()
{
major = 0;
minor = 0;
service_pack = 0;
}
Version& Version::setMinor(int min)
{
minor = min;
return *this;
}
Version& Version::setMinor(int maj)
{
major = maj;
return *this;
}
Version& Version::setMinor(int sp)
{
service_pack = sp;
return *this;
}
int Version::getMinor(Version* const this)
{
return this->minor;
(*this).minor;
}
int Version::getMajor(Version* const this)
{
return this->major;
(*this).major;
}
int Version::getService_pack(Version* const this)
{
return this->service_pack;
(*this).service_pack;
}
int main()
{
int minor, major, service_pack;
Version a;
cout << "Enter minor, major, and service pack: " << endl;
cin >> minor, major, service_pack;
a.setMinor(minor).setMajor(major).setService_pack(service_pack);
cout << "Major: " << a.getMajor() << "Minor: "<< a.getMinor << "Service Pack: " << a.getService_pack();
system("PAUSE");
}
答案 0 :(得分:0)
您在main()
中遗漏了p a.getMinor()
的parenbtheses。this
。如果没有括号,您将引用成员函数本身。
如果您返回值,您的getter原则上应该不带参数。无论如何,请避免传递名为const
的参数。
您可以进一步改进,将getter声明为int Version::getMinor() const
{
return minor; // this-> is only needed to disambiguate
}
:
{{1}}