在使用级联和PLP时创建类

Creating a class while using cascading and PLP

本文关键字:创建 PLP 级联      更新时间:2023-10-16

所以我正在尝试创建一个包含数据成员的类(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");
}

您在main()中缺少用于平铺a.getMinor()的括号。如果没有括号,您将引用成员函数本身。

如果您返回值,那么getter原则上不应该接受任何参数。在任何情况下,都应避免传递名为this的参数。

您可以做的一个进一步改进是将getter声明为const:

int Version::getMinor() const
{
    return minor;   // this-> is only needed to disambiguate
}