我不明白在read()方法中要做什么
I dont understand what to do in the read() method
这是我的c++作业,我并没有真正理解它们在方法read()中设置值的含义。问题:创建一个名为Athlete的基类,其中包含两个成员变量,用于所有职业运动员的共同属性:姓名和年薪。它还应该包含纯虚拟方法read()。调用方法read()从用户读取数据以设置属性值。这是我的头文件
#ifndef ATHLETE_H
#define ATHLETE_H
#include <string>
using namespace std;
class Athlete
{
public:
Athlete();
~Athlete();
void setName(string name);
string getName() const;
void setSalary(double salary);
double getSalary() const;
virtual void display() const;
virtual void read(string name, double salary) const;
private:
string name;
double salary;
};
#endif
And my cpp
#include "Athlete.h"
#include <iostream>
Athlete::Athlete() {}
Athlete::~Athlete() {}
string Athlete::getName() const { return this->name; }
void Athlete::setName(string name) {
this->name = name;
}
double Athlete::getSalary() const {
return this->salary;
}
void Athlete::setSalary(double salary) {
this->salary = salary;
}
void Athlete::read(string name, double salary) const {
Athlete* temp = new Athlete();
temp->setName(name);
temp->setSalary(salary);
}
void Athlete::display() const {
cout << "Name: " << this->getName() << endl;
cout << "Salary: " << this->getSalary() << endl;
}
我尝试在read中使用setter方法,但是有一个错误。
我想你误解了这个问题。它说read()
方法应该从用户那里读取数据。通常它意味着从标准输入中读取。然后,该方法应该为这个特定运动员设置属性值。也就是说,输入的值与这个特定的对象相关。而不是为了新的和暂时的东西。
把所有东西放在一起可能看起来像这样:
void Athlete::read()
{
string name;
double salary;
std::cout << "Please enter the athlete name:";
std::cin >> name;
std::cout << "Please enter the athlete salary:";
std::cin >> salary;
setName(name);
setSalary(salary);
}
您错过的事情是read
应该是纯虚拟函数。这意味着您不应该实际实现它,而应该将其声明为:
virtual void read(string name, double salary) = 0;
这意味着Athlete
类实际上不能被实例化(它被称为抽象类),相反,它将被用作基类,派生类将被要求覆盖read
方法。如果它们不重写方法,它们本身就是抽象的,不能被实例化。
你是不需要实现read
方法作为Athlete
的方法一旦你声明它为纯虚的。它只需要在派生类中作为一个方法来实现。
由于派生类中的方法应该修改对象,因此该方法不能被const
声明(如上所示)。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在 c++ 中拥有一组结构的正确方法是什么?
- 通过JNI传递数据数组的最快方法是什么
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 在另一个类视图中添加最多2个图表的正确方法是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 在C++中包含原型文件的正确方法是什么?
- 在 OpenCV C++ 中估计基本矩阵之前对相应点进行归一化的正确方法是什么?
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?