在使用级联和PLP时创建类
Creating a class while using cascading and PLP
所以我正在尝试创建一个包含数据成员的类(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
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++类内存结构中创建"spacer"?
- 终端不会为C++文件创建.exe文件吗
- 在使用级联和PLP时创建类