首页 > 解决方案 > 需要一些关于如何使用抽象类处理项目的帮助

问题描述

需要帮助创建一个将对字符串执行改组的程序。它将读取两个文件;

Steps.txt - 包含要按顺序应用的几个原始洗牌步骤。在这个初始版本中,只会实现两种步骤: rev -- 反转字符串。cut n -- 将前 n 个字符移动到字符串的末尾。(如果 n 大于字符串的长度,则什么也不做。)

input.txt 包含要洗牌的字符串,每行一个。程序应该打印洗牌每个字符串的结果,每行一个(仅此而已)。例如,假设文件 steps.txt 包含以下内容: cut 1 rev cut 5

并且文件 input.txt 包含一行 abcdefgh。然后你的程序应该打印 dcbahgfe,它是通过以下步骤从输入行获得的: bcdefgha (from cut 1) ahgfedcb (from rev) dcbahgfe (from cut 5)

中间步骤不应该由程序的最终版本打印出来。这应该对输入的每一行重复。

所以基本上我需要做的是,但我对如何去做这件事感到困惑;

  1. 为随机播放步骤定义一个抽象类。这个类应该有一个纯虚成员函数,它接受一个字符串并对其进行转换。
  2. 定义这个类的两个派生类,用于上面定义的两种shuffle step。

标签: c++

解决方案


我相信你在问什么是抽象类,什么是纯虚成员函数。

首先,类是一组函数和属性。在现实世界中,我们有一些你可以认为是类的东西。一类的一个例子是汽车。汽车上的功能可能是:停止、前进、左转、右转等。属性可能是:颜色、品牌、型号等。

抽象类是没有任何实现的类。它只是说明了一个类应该是什么样子。抽象类的一个例子是车辆。Car 类将实现抽象类 Vehicle。

C++ 中的纯虚方法是没有定义的方法。您可以通过给它至少一个纯虚方法来将一个类定义为抽象类。这是一个例子:

class Vehicle {
  public:
    virtual void drive() = 0; // The 0 means it's a pure virtual, has no implementation.
}

class Car : public Vehicle {
  public:
    void drive(); // We are saying that we implement drive.
}

void Car::drive(){
  std::cout << "Driving!\n";
}

您应该阅读类和抽象类以获得更好的理解。


推荐阅读