Oto ona: chcę utworzyć funkcję pustki, która otrzyma dwa dobrze znane typy wartości i kolejną, która może być dowolna. Kod byłoby tak:C++ wysyła argumenty dowolnego typu do funkcji
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;
}
}
I tryied aby wartość za typ const void*
ale pojawia się błąd (cast from ‘const void*’ to ‘short int’ loses precision
), bo po prostu to zrobił: short name = (short)value
, która musi być trochę szalony desperacką próbę, chcąc mieć szczęście . Teraz nie wiem, czy istnieje sposób, aby to zrobić, przekazać wskaźnik jakiejkolwiek zmiennej, a następnie przekonwertować ją na to, co to jest (znam typ zmiennej, której można oczekiwać w zależności od każdego przypadku.) Jak to zrobić ? Dzięki
to prawda, ale w tym punkcie Dlaczego nie stworzyć inną funkcję dla każdego ustawienia i uniknąć sprawy przełącznika. – Caesar
Tak - powoduje, że zmienna 'setting' jest niepotrzebna. –
Spróbujmy tego. Oczywiście nadal mogę używać przełącznika i ustawienia, jeśli mam różne przypadki, w których potrzebuję wartości int, na przykład – ali