我必須爲我的值中的所有類型創建乘法的重載運算符類。但我不知道我應該如何編碼乘以一個字符串,比如說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