用C ++创建和实现类

时间:2016-04-07 02:48:53

标签: c++ class c++11 header inline

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

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

Regex linkParser = new Regex(@"<a.*?>", RegexOptions.Compiled | RegexOptions.IgnoreCase);
        foreach (Match m in linkParser.Matches(source))
        {
            if (m.Value.Contains("data-jobid"))
            listBox1.Items.Add(m.Value);
        }

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

这是我给出的有关此课程的所有信息:

  

Resistor类将使用Resistor.h和   Resistor.cpp。 Resistor类将公开继承   ElectronicComponent。你需要实现一个析构函数和三个   虚函数getValue,getUnits和to_string。你也需要   一个构造函数,它接受一个输入参数,即。的值   电阻。值为double类型。 getValue函数需要   将值返回为double。 getUnits函数需要返回   “Ohm(s)”作为std :: string。

其他类应该以相同的方式构建,因此理解其中的工作方式应该可以帮助我很多。感谢。

2 个答案:

答案 0 :(得分:3)

在标题中使用:

#include<string>

答案 1 :(得分:1)

派生的Resistor类中的函数不应指定为纯虚函数(由&#34; = 0&#34;表示)。纯虚函数是基类中没有基类实现的函数。此外,您的 getValue getUnits 函数可能不是您的ElectronicComponent基类中的纯虚函数,但实际上是在那里实现的:

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

在这种情况下,您在派生类中不需要它们。因此,您的派生Resistor类应该类似于:

#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 + ")";
}