2015-04-06 32 views
-3

我目前正試圖讓程序只發送選定的選項到字符串函數。但是,我收到一個錯誤 -從構造函數返回值的C++錯誤

「錯誤從構造函數返回值」。

我試圖將其更改爲breakstatement,但會打印「Starter ::::說明:價格」。那是我想要的。不過,如果我擴展我的菜單,確保主菜等等,它只會打印「入門:主菜:飲料:布丁:說明:價格」。這不是我想要的。

道歉放置菜單在構造函數中,我將殺青不久

category::category(){ 
_starter = "Starter"; 
_maincourse = "MainCourse"; 
_pudding = "Pudding"; 
_drink = "Drink"; 
_itemDescription = "Item Description"; 
_price = "Price"; 


cout << "Menu\n====\n" << endl; 
cout << "(1) Starter\n(2) Main Course " 
"items\n(3) Pudding.\n(4)Drink\n(5) End program\n" << endl; 
cout << "Select: "; 
char ch; 
cin >> ch; 
cin.ignore(100, '\n'); 
cout << endl; 

switch(ch) { 
case '1': 
      cout << "Item Description: "; 
      getline(cin,_itemDescription); 
      cout << "Price: "; 
      getline(cin,_price); 
return; 

}

而且_starter將進入一個函數的ToString()

string category::tostring() { 
string record = _starter + ":" + _maincourse + ":" + _pudding + ":" + _drink + ":" + _itemDescription + ":"+ _price; 

回答

2

回報構造函數和析構函數不能返回任何東西。也許你可以將返回值存儲在構造函數所用類的公共屬性中,並提供一個替代函數來獲取該屬性。從構造函數拋出異常

+0

這是一個很好的選擇,它將是一個cast操作符。這樣你就可以模擬返回構造函數的值幾乎100%。 – AnArrayOfFunctions 2015-04-06 14:07:45

+0

我想創建另一個類,例如:'ref class Static Properties {static int returnvalue; Public:static屬性int static_return;}'或者在'public class'中有'int returnvalue;'我有starters的屬性等嗎? – Prymz 2015-04-06 14:58:05

+0

只要你不試圖從構造函數或析構函數中返回一個值,這真的取決於你。 – rsethc 2015-04-07 02:51:56

0

構造函數不能返回任何(唯一允許的return聲明是一個沒有表情,所以沒有被返回給調用者(即return;)。

一種常見方式報告錯誤。