C++:使用单个 get 函数返回与对象相关的变量
C++: Using a single get function to return the variables related to an object
我是一名新手程序员,为学校做一个编码项目。
问题域如下:
编写与时钟相关的C++程序
- 定义一个名为 时钟 的类,保存在单独的文件中,其中包括以下成员:
- 与小时、分钟和秒相关的三个成员变量
- 一个返回三个变量值的访问器函数(提示:使用指针)
- 一个修改所有变量的突变器函数(提示:使用三个参数)
- 用 1 递增每个变量的函数(提示:三个函数)
- 重载函数以使用用户输入的值递增变量(提示:该值是函数的参数)
- 一个将时钟设置为 0 小时、0 分钟和 0 秒的默认构造函数
- 将时钟设置为给定时间(小时、分钟、秒)的重载构造函数
- 定义保存在单独文件中的第二个类,其中包括
- 静态成员变量
- 静态成员函数
- 在先前定义的文件中包括C++代码,以确保类不会在主程序中加载两次
- 定义一个主程序,保存在一个单独的文件中,
- 实例化三个对象,一个使用 Clock 的默认构造函数,一个使用 Clock 的重载构造函数,一个基于第二个类
- 使用这些对象调用两个类中定义的所有函数:
- 使用多个"CIN"语句从用户读取所需时间,并将这些值用作所需相应函数的参数
- 每个函数仅调用一次,使用定义的对象之一
- 使用访问器函数打印修改 Clock 类变量的每个函数调用后的时间
- 包括使用第二个类的静态成员的代码
我们在课堂上做了很多例子,我们能够使用单独的get\set函数,但这是我们第一次尝试使用单个get函数和指针来做到这一点。坦率地说,我迷路了
这是我的头文件的内容:
// default class definition
#ifndef CLOCK1_H
#define CLOCK1_H
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
class Clock
{
private:
int hours;
int minutes;
int seconds;
public:
int Clock::getInitialTime();
int Clock::setClockTime();
Clock::Clock(); // default constructor
Clock::~Clock(); // default destructor
};
#endif
这是我的源代码文件的内容:
// function declarations main program
//
#include "stdafx.h"
#include "Clock1.h"
#include <iostream>
#include <conio.h>
using namespace std;
int Clock::getInitialTime()
{
return hours, minutes, seconds;
}
//void Clock::setClockTime(int hr,min,sec)
//{
// hours=hr;
// minutes=min;
// seconds=sec;
//}
// default constructor
Clock::Clock()
{
hours=0;
minutes=0;
seconds=0;
}
// default destructor
Clock::~Clock()
{
cin.get();
cin.get();
}
int main()
{
Clock defaultObj;
defaultObj.getInitialTime();
cout << "The initial time is " << defaultObj.getInitialTime() << endl;
return 0;
}
我正在尝试以小步骤进行此操作,第一个目标是能够输出小时,分钟,秒的初始值。 完成此操作后,我可以添加带有其他参数的其他构造函数。
我的第一个猜测是我需要添加以下内容:
构造 函数:将适当的参数添加到默认构造函数
Clock::Clock(int *hourPrt, int *minutePtr, int *secondPrt)
创建指针
Clock *hourPtr;
Clock *minutePtr;
Clock *secondPtr;
将它们与对象的属性相关联
hourPrt=defaultObj.hours
minutePtr=defaultObj.minutes
secondPrt=defaultObj.seconds
getInitialTime 函数如何修改它
主函数调用如何修改它
谁能帮我解决这个问题?
谢谢
构造函数不是您需要更改的函数之一。 从写void Clock::setClockTime(int hours, int minutes, int seconds)
开始,这是最简单的。
另请注意,在类内部时,不要在成员函数前面加上类名。
class Clock
{
public:
Clock::Clock(); // WRONG
Clock(); // RIGHT way to declare constructor
};
你可以创建一个包含三个值的结构并返回它,或者你可以返回一个指向 3 int
s 数组的指针——使元素[0]
小时、[1]
分钟等。 请注意,如果要在实际C++代码中这样做,则需要使用类似vector
的东西,以便客户端不必在返回的数组上调用delete []
后。:)
要"返回"多个参数,您必须使用指针:
void get_values(int *hours, int *minutes, int *seconds) {
*hours = this->hours;
*minutes = this->minutes;
*seconds = this->seconds;
}
用法:
int hours, minutes, seconds;
clock.get_values(&hours, &minutes, &seconds);
第一步,我将进行以下更改:
- 更改
getInitialTime()
以返回Clock
类型 -
添加一个方法以显示
Clock
对象的值。(这最终可以更改为ostream
输出运算符)。void Display(const Clock& clock) { cout << clock.Hour << ":" << clock.Minutes << ":" clock.Seconds << endl; }
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 如何使用std::lower_bound比较对象变量,而不使用第二个对象进行比较
- 将私有对象变量与用户输入的变量进行比较
- 具有已定义操作重载的 C++ 非类型化值对象/变量库
- 如何对对象数组进行排序,而不考虑对象变量类型
- 在功能中设置对象变量
- 如何创建对象变量,以便每次分配新的指针
- C++ FileIO 以读取和写入对象变量
- 私下声明的对象变量的突变器/访问器方法
- C++ 列表中的对象变量在迭代过程中不会更新
- 稍后使用私有对象变量时如何初始化数组(初始化对象后)
- 通过向量更改对象变量的值
- C 全局对象变量内存释放
- 基本数据类型变量 VS 对象变量
- C 复制分配运算符,用于参考对象变量
- c++从列表中移除元素,并将其分配给对象变量
- 我们是否需要在C++中同步局部对象变量
- 点运算符和箭头运算符之间的区别 结构对象变量 在 C 或 C++ 中创建树
- 无法访问在 std 回调中传递的对象变量