我有一个赋值,我必须“创建一个名为Number的类,它是从string派生的。你将使用它作为基类来派生你的Integer和Double类。”接着说,Integer和Double类的数据部分将“消失”。
“因为Number是从string派生的,而Integer和Double是从Number派生的,所以它们都变成了字符串。这为你提供了一个内置的数据部分。”我不明白的是我的数据部分现在在哪里。如何调用并更改它。
“此时您的Number类将只包含以下代码:
-A无参数构造函数,将数据部分设置为“0”
- 一个重载的构造函数,它接受一个字符串并将数据部分设置为传递给它的值。“
//Number class with the two constructors
#ifndef NUMBER
#define NUMBER
#include <iostream>
#include <string>
using namespace std;
class Number: public string
{
public:
Number() : string("0") { }
Number(string s) : string(s) { }
};
#endif
双课
//Double class
#ifndef DOUBLE
#define DOUBLE
#include <string>
#include "Integer.h"
#include "Number.h"
using std::string;
class Double: public Number
{
private:
// do i call Number here? like Number data; or double data;?
// or is the data not here?
void isNan(string s);
bool nan = false;
void recursiveNaN(string::iterator p, string::iterator n);
public:
// Constructors
Double();
Double(double d);
Double(const Double &d);
Double(const Integer &i);
// Functionality
void equals(double d);
Double &equals(const Double &d);
Double add(const Double &d);
Double sub(const Double &d);
Double mul(const Double &d);
Double div(const Double &d);
double toDouble() const;
//Primitives
Double add(double d);
Double sub(double d);
Double mul(double d);
Double div(double d);
// Operator Overload
Double operator + (const Double &d);
Double operator - (const Double &d);
Double operator * (const Double &d);
Double operator / (const Double &d);
Double &operator = (const Double &d);
bool operator == (const Double &d);
bool operator == (double d);
bool operator != (const Double &d);
bool operator != (double d);
//String stuff
Double(string s);
bool isNan();
void equals(string s);
Double &operator = (string s);
string toString();
};
#endif // !DOUBLE
我们的一个提示是关于void quals(double d)函数。提示是将d转换为字符串,然后使用重载的字符串参数调用equals以指定this-&gt;。
void Double::equals(double d)
{
stringstream ss;
ss << d;
this->equals(ss);
}
void Double::equals(string s)
{
this->isNan(s);
if (!this->isNan())
this->assign(s);
else
this->assign("0.0");
}
在我的脑海中,这将是他的意思,但这给了我和错误,没有成员函数调用equals.I只需要知道如何调用这些新数据以及如何更改它。我的Number类也不能再使用它了。
答案 0 :(得分:0)
我不明白的是我的数据部分现在在哪里。如何调用并更改它。
你没有。数字是一个字符串,因为您是从字符串派生的。你想要什么额外的数据?您可以通过调用std::string
的任何成员函数或将类的实例传递给任何带有std::string
(或引用一个)的函数来调用它。