在C++中创建和实现类

Creating and Implementing Classes in C++

本文关键字:实现 创建 C++      更新时间:2023-10-16

在我的计算机科学课上,我们正在学习如何使用类创建虚拟电气组件。。。我们需要创造五样东西;main()以及ElectricalComponent.h/.cpp、Resistantor.h/.cpp、Capacitor.h/.cpp和Battery.h/.cpp.

我已经创建了电气元件类,我知道如何创建和修复主函数中的任何错误,但我在构建电阻器类时遇到了问题。

#include <iostream>
#include "ElectronicComponent.h"
class Resistor :
    public ElectronicComponent
{
public:
    Resistor(double);
    virtual ~Resistor();
    virtual double getValue() const = 0;
    virtual std::string getUnits() const = 0;
    virtual std::string to_string() const = 0;
};
Resistor::Resistor(double v)
{
    value = v;
}
std::string Resistor::to_string() const
{
    return "Resistor value (" + std::to_string(value) + " " + units + ")";
}

我收到的错误是命名空间std没有成员to_string,并且我的变量值和单位未声明。我理解未声明的变量的含义,但不理解to_string错误。

这是我得到的关于这个类别的所有信息:

电阻器类将使用文件Resistor.h和电阻器.cpp。电阻器类将公开继承电子元件。你需要实现一个析构函数和三个虚拟函数getValue、getUnits和to_string。您还需要一个构造函数,它接受一个输入参数电阻器。该值的类型为double。getValue函数需要以双精度形式返回值。getUnits函数需要返回"欧姆"作为标准::字符串。

其余的类应该以相同的方式构建,所以了解一个类的工作原理应该会对我有很大帮助。谢谢

在标题中使用:

#include<string>

派生的Resistor类中的函数不应指定为纯虚拟函数(用"=0"表示)。纯虚拟函数是基类中没有基类实现的函数。此外,据推测,您的getValuegetUnits函数在ElectronicComponent基类中不是纯虚拟的,而是实际实现为:

double ElectronicComponent::getValue() const {
    return value;
}
std::string ElectronicComponent::getUnits() const {
    return units;
}

在这种情况下,派生类中不需要它们。因此,您派生的电阻类应该看起来像:

#include <string>
#include "ElectronicComponent.h"
class Resistor : public ElectronicComponent
{
public:
    Resistor(double);
    virtual ~Resistor();
    virtual std::string to_string() const;
};
Resistor::Resistor(double v) : units("Ohm(s)")
{
    value = v;
}
std::string Resistor::to_string() const
{
    return "Resistor value (" + std::to_string(value) + " " + units + ")";
}