在C++中创建和实现类
Creating and Implementing Classes in C++
在我的计算机科学课上,我们正在学习如何使用类创建虚拟电气组件。。。我们需要创造五样东西;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"表示)。纯虚拟函数是基类中没有基类实现的函数。此外,据推测,您的getValue和getUnits函数在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 + ")";
}
相关文章:
- 如何在C++中正确创建/实现拦截器库?
- 创建单独的实现文件和头文件
- 创建Mesh类并实现不会生成模型OpenGL
- 如何创建一个接口,允许我访问C++中的按钮(和其他ui)函数,该函数是使用python中的MFC实现的
- 基于模板参数创建多个类实现
- 我们可以在层次结构中创建多个纯虚拟接口及其实现而不会代码爆炸吗?
- 在不创建新节点的情况下实现带有映射的trie
- 如何在结构中实现文件读取和创建
- 在头文件和实现文件中创建模板模板函数
- 使用抽象类的类和实现此抽象类的创建对象
- 如何将 A 实现到 B 中,将 B 实现到 A 中(不创建循环)?
- 如何实现由TPAINTBOX创建的新组件的OnMousedown,OnMouseUp事件
- 如果不在派生类实现中执行此操作,"basic_streambuf"是否会创建自己的获取/放置区域?
- 创建一个类方法模板,该模板将使用稍后实现的函数
- 有没有办法(C++)创建一个实现某些功能的模板类?
- 从实现 operator[] 的类自动创建迭代器
- 创建头文件和实现文件时出现问题
- 为元组实现创建索引序列
- 在.c文件接收函数中使用Linux中的MSGGET创建消息队列未实现错误
- 使用标准c++库vector作为底层实现创建Set模板类