那麼,我是新來的運算符重載,我發現這個問題。而不是記錄自己,我寧願問你:DC++運算符重載示例
重點是,我知道如何做簡單的操作符重載,但我面臨堆棧操作的問題。我會盡力把一個相對簡單的例子:
struct dxfdat
{
int a;
string b;
/* here is the question */
}
/* use: */
dxfdat example;
example << "lalala" << 483 << "puff" << 1029 << endl;
"lalala" << 483 << "puff" << 1029 << endl
應存放在b
。
dxfdat& operator<< (T a)
和類似的東西的工作與一個參數(example << 7)
,但我希望它在'cout
'時尚。
對不起,太懶惰了。
編輯:
真實的東西......好吧,這是有點麻煩......其實,B不是字符串,而是其他物體的向量,example << "lalala" << 483 << "puff" << 1029 << endl
應該僅僅只創建一個目的。
這是我想要什麼(翻譯),但我對如何告訴它何時創建對象不知道(因爲它從左至右排列的,不是嗎?):
struct dxfDato
{
dxfDato(int c = 0, string v = 0, int t = 0) { cod = c; val= v; ty = t; }
int ty;
int cod;
string val;
};
struct dxfItem
{
int cl;
string val;
vector<dxfDato> dats;
vector<dxfItem> sons;
template <class T>
dxfItem &operator<<(const T &t)
{
dxfDato dd;
std::stringstream ss;
ss << t;
val = ss;
dats.push_back(dd); // this way, it creates a lot of objects
return d;
}
};
dxfItem headers;
headers << "lalala" << 54789 << "sdfa" << 483 << endl;
// this should create *just one object* in dats vector,
// and put everything on string val
感謝一切,
注:我不得不提取和翻譯了很多東西把它放在這兒,所以我沒有檢查代碼中的錯誤愚蠢的。
(對不起,擴大這麼多,請告訴我,如果我濫用計算器的問題,系統問題)
你到目前爲止嘗試過哪些代碼?請張貼它。 – strager 2010-02-04 10:59:06
@strager: 原始代碼有點混亂。而且,這個問題比我放的更難一些。現在我提出一些關於這個問題的更多信息(也許我應該打開另一個問題,不是嗎?) Thx用於第一次編輯。 – huff 2010-02-04 11:37:35
我很難讀懂你的代碼。你能否爲了清晰起見而重寫代碼和問題? – bdd 2010-02-04 12:24:36