我必须为我的值中的所有类型创建乘法的重载运算符类。但我不知道我应该如何编码乘以一个字符串,比如说S,用一个整数,比如N表示,其中的返回值是字符串S连接N次。这是我所拥有的:如何通过过载*运算符连接字符串,如果我将整数N乘以字符串S,我应该得到S连接N次
enum Type {
INTEGERVAL,
FLOATVAL,
STRINGVAL,
UNKNOWNVAL,
};
class Value {
int i;
float f;
string s;
Type t;
public:
Value(int i) : i(i), f(0), t(INTEGERVAL) {}
Value(float f) : i(0), f(f), t(FLOATVAL) {}
Value(string s) : i(0), f(0), s(s), t(STRINGVAL) {}
Type GetType() { return t; }
int GetIntValue();
float GetFloatValue();
string GetStringValue();
Value operator*(const Value& op) const
{
if (t == INTEGERVAL)
{
// I can multiply with another integer or float
if (op.t == INTEGERVAL)
return Value(i * op.i);
else if (op.t == FLOATVAL)
return Value(i * op.f);
}
else if (t == FLOATVAL)
{
// I can multiply with another integer or float
if (op.t == INTEGERVAL)
return Value(f * op.i);
else if (op.t == FLOATVAL)
return Value(f * op.f);
}
else if (t == STRINGVAL)
{
if (op.t == INTEGERVAL)
{
//I can concatenate a string times the value of the integer
//Not sure how to do it//
return Value(); //I don't know what the return should be//
}
}
return Value(); // invalid!
}
};
我真的很感谢一些关于如何完成这个任务的指导。 请让我知道,如果我需要提供有关此代码的任何其他信息,或者如果我需要以更好的方式陈述我的问题=)
谢谢大家!
没有人知道如何将字符串存储在你的'Value'类。你有'std :: string'成员吗?一个char *'?一些其他形式的字符串? –
一般来说,找到字符串操作数的长度,将其乘以整数以找出结果的长度。分配/预先保留空间,然后多次将字符串复制到输出字符串中。 –
谢谢@BenVoigt。我非常欣赏这个回应。我包含了适合这个问题的Value类的部分。你说过的话现在还在起作用,现在Value类已经包含了吗? – Phoenix8