Beliebig viele Parameter an eine Funktion übergeben
-
Hallo.
ich programmiere schon länger mit anderen Programmiersprachen, z.B: auch Prolog. Da geht es ja, zum Beispiel beim übergeben einer Liste beliebig viele Parameter an die "Funktion" (sind ja Regeln) zu übergeben. Geht das bei C++ iregndwie auch ohne dass ich beim BCB z.B. extra nen TList nutzen muss?
Mfg
-
Wenn ich mich recht erinner geht das mit "..." als Parameter, sollte aber nicht genutzt werden, wegen der Typprüfung(?):
void funktion(...){}
Dazu gab es letztens einen Thread im ANSI-C Forum, solltest dort mal nachsehen. Ging um printf glaube ich.
Code-Hacker
-
Code-Hacker schrieb:
sollte aber nicht genutzt werden, wegen der Typprüfung(?)
Vorallem duerfen keine Non-PODs damit uebergeben werden... Da kein CopzCtor aufgerufen wird/werden kann.
-
Sowas ähnliches hatte mal jemand in #cpp gebaut:
template<class T> struct valist { std::vector<T> v; valist& operator<<(const T& x) { v.push_back(x); return *this; } // + überladen von [] usw. }; void func(valist<int> args) {...}; int main() { func(valist<int>() << 1 << 2 << 3); }
Aber naja, IMHO nicht so schön in der Anwendung und hat eben den Nachteil, dass erst alles in einen vector kopiert wird.
-
Ich würde da eher Alexandrescus Variante nehmen...
http://www.moderncppdesign.com/publications/inline_containers.htmlDas ergänzt man um boost::any und schon ist es akzeptabel.
Aber ich bezweifle, dass so etwas wirklich nötig ist - sieht für mich eher wie eine spielerei aus.
-
Kann man eigentlich auch einen Aufruf machen mit einer Variablen Anzahl von Argumenten?
-
Shade Of Mine schrieb:
Ich würde da eher Alexandrescus Variante nehmen...
http://www.moderncppdesign.com/publications/inline_containers.htmlJa, dass ist auf jeden Fall perfektionierter.
Shade Of Mine schrieb:
Aber ich bezweifle, dass so etwas wirklich nötig ist - sieht für mich eher wie eine spielerei aus.
Naja, nötig ist vieles nicht. Aber mit dieser verkappten ()()- oder <<-<<-Syntax, lass ich es dann auch lieber bleiben.
@***
darum gehts doch hier...