這裏是:我想創建一個void函數,它將接收兩個衆所周知的值類型和另一個可能是任何類型的值。該代碼會是這樣:C++發送任何類型的參數給一個函數
void change_settings(string element, short setting, ??? value) {
switch (setting) {
case ST_NAME:
// Cast value to string or char* and change element.name
break;
case ST_AMOUNT:
// Cast value to integer and change element.amount
break;
case ST_ENABLED:
// Cast value to boolean and change element.enabled
break;
}
}
我tryied使值的類型const void*
但我得到一個錯誤(cast from ‘const void*’ to ‘short int’ loses precision
),因爲我只是做了這一點:short name = (short)value
,必須是一些瘋狂的絕望的審判,希望能得到幸運。現在,我不知道是否有辦法做到這一點,傳遞任何類型的變量的指針,然後將其轉換爲它是什麼(我知道根據每種情況期望的變量類型。 我該如何做到這一點?!謝謝
這是事實,但在這一點上,爲什麼不爲每個設定不同的功能,避免了開關的情況下。 – Caesar
是的 - 它使'設置'變量不必要。 –
讓我們試試這個。當然,我仍然可以使用開關和設置,如果我有不同的情況下,我需要一個int值,例如 – ali