我正在为我的计算机科学课开设一个项目,并且刚刚开始上课。我已经完成了(我认为)构建我需要的类,但是我在实现它们时遇到了麻烦。这就是我对main.cpp的所作所为:
#include "ElectronicComponent.h"
#include "Resistor.h"
#include "Capacitor.h"
#include "Battery.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int NUMBER_OF_COMPONENTS = 7;
ElectronicComponent
*components[NUMBER_OF_COMPONENTS] =
{
new Resistor(5.0), // These are where my errors are.
new Capacitor(0.0001),
new Battery(9.0),
new Resistor(6.5),
new Battery(11.1),
new Capacitor(0.000001),
new Resistor(10000.0),
/* create more components here */
};
return 0;
}
这是其中一个类的一个例子。
#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;
};
#include "Resistor.h"
#include <string>
double value;
std::string units = "Ohm(s)";
Resistor::Resistor(double v)
{
value = v;
}
Resistor::~Resistor()
{
}
std::string Resistor::to_string() const
{
return "Resistor value (" + std::to_string(value) + " " + units + ")";
}
对于 ElectronicComponent 数组中的每个项目,我应该调用 getValue 和 getUnits 成员函数并显示结果。
第二次浏览 ElectronicComponent 数组并使用 ElectronicComponent 项目显示输出。
这是一个例子(假设组件是ElectronicComponent的数组 指针):
cout << "Component " << count << " " << *components[index] << endl;
目标是使用硬编码的数字最终获得如下输出:
Component 0 Resistor value (5.000000 Ohm(s))
Component 1 Capacitor value (0.000100 Farad(s))
Component 2 Battery value (9.000000 Volt(s))
Component 3 Resistor value (6.500000 Ohm(s))
Component 4 Battery value (11.100000 Volt(s))
Component 5 Capacitor value (0.000001 Farad(s))
Component 6 Resistor value (10000.000000 Ohm(s))
答案 0 :(得分:0)
Resistor
(我假设你的其他ElectronicComponent
派生类)方法在声明结尾处不应该有= 0
。
= 0
中的virtual double getValue() const = 0;
和Resistor
的其他方法意味着该方法是纯虚函数。也就是说,它没有实现,只作为要在派生类中重写的接口而存在。包含纯虚方法的类无法实例化。