[英]passing reference to object c++
好吧,所以我正在做一個有趣的項目,我是一位經驗豐富的LAMP開發人員,所以我決定使用C ++
這段代碼只是我在嘗試使工作的應用程序比“ Hello World”困難一點的嘗試。我的問題在void Defer()中。 我想將對PoS類的引用傳遞給我的ItemList,以便它在返回收據和計算時可以利用稅收值
但是這是我得到的錯誤:
“ ItemList :: ItemList(PoS&pos)”不為以下項目提供初始化程序:-參考成員“ ItemList :: client”
class PoS {
private:
/*
States
0: Main Menu
1: Order Menu
2: Edit Menu
3: Tax Menu
4: Business Menu
*/
int State;
vector<ItemList> Orders;
bool IsLiveFlag;
double Tax = 0.06;
public:
PoS() {
// Constructor
}
// .......
void Defer() {
string Command;
gotoMain:
ShowMain();
cin>>Command;
if (tolowercase(Command) == "1") {
ItemList order(*this);
Orders.push_back(order);
State = 1;
Orders[Orders.size() - 1].Defer();
State = 0;
}
}
}
class ItemList {
private:
vector<Item> Items;
double Subtotal;
double Tendered;
bool Paid;
PoS& client;
public:
ItemList(PoS& pos) {
Subtotal = 0;
Tendered = 0;
Paid = 0;
PoS& client = pos;
}
由於某種原因,我無法獲得對PoS的引用以作為參數發送到我的ItemList,這實在令人沮喪!
必須在構造函數的主體之前初始化引用成員變量。 這就是您帖子中編譯器錯誤消息的含義。
代替
ItemList(PoS& pos) {
Subtotal = 0;
Tendered = 0;
Paid = 0;
PoS& client = pos;
}
采用
ItemList(PoS& pos) : client(pos) {
Subtotal = 0;
Tendered = 0;
Paid = 0;
}
您也可以通過使用相同的語法形式來初始化其他成員變量來對此進行改進。
ItemList(PoS& pos) : Subtotal(0),
Tendered(0),
Paid(0),
client(pos) {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.