Begriffe in C++ zusammenfassen
-
Oder EUROPA | ASIEN.
Edit: Oder "Europa" | "Asien". |-Operator für Zeichenketten definieren!
Aber enums sind in diesem Fall wirklich besser:landNachKontinent["Spanien"] = "Europa"; //... if (landNachKontinent[land] == "Euorpa") // Upps, Tippfehler //...
-
Oder so.

#include <iostream> enum class Country { Germany, Austria, China }; template<Country... Members> struct CountryGroup { static bool contains(Country country) { bool result = false; bool dummy[] = { (result || (result = country == Members))... }; (void)dummy; return result; } }; typedef CountryGroup<Country::Germany, Country::Austria> Europe; typedef CountryGroup<Country::Germany, Country::China> NonDemocratic; int main() { std::cout << "Germany is "; if(!Europe::contains(Country::Germany)) std::cout << "not "; std::cout << "in Europe!\n"; std::cout << "China is "; if(!Europe::contains(Country::China)) std::cout << "not "; std::cout << "in Europe!\n"; }
-
geschlossen
-
geschlossen
-
Und in Europa.
-
geschlossen
-
Das ist C++11, Dev-C++ supported es höchstwahrscheinlich nicht.
-
wisnia schrieb:
doch doch, kannst du ^^ in dem du mir zB sagst was ich hier falsch hab:
#include map<string,string> Kontinente; landNachKontinent["Spanien"]="Europa"; landNachKontinent["Deutschland"]="Europa"; using namespace std;int main(int argc, char *argv[])
c++ Tags wären cool.
Unten unter dem Eingabe Feld auf C++ drücken dann Code rein dann wieder C++* drücken.#include map<string,string> Kontinente; //warum steht da ein include? landNachKontinent["Spanien"]="Europa"; //Warum heißt es plötzlich landNachKontinent?? landNachKontinent["Deutschland"]="Europa"; using namespace std;//warum kommt der namespace erst nach dem map? -> std::map
-
geschlossen
-
wisnia schrieb:
so funktioniert es jedenfalls auch nicht. Da kommt raus invalid preprocessing directive # map
schau nochmal in ein gutes Grundlagenbuch.
mit # erstellt man Präprozessordirektiven, keine globalen Variablen.
-
geschlossen
-
Du lässt den Troll ein bisschen zu weit zum Fenster raushängen.
-
Warum funktioniert das:
std::string a = "a"; std::string b = "b"; std::string c = "c";& das hier nicht?
std::string Europa = "Spanien", "Italien", "Deutschland"; std::string Afrika = "Kenia", "Aethiopien", "Namibia";Vlt, weil Du versuchst einer Stringvariablen simultan mehrere Werte zuzuweisen?
Geht genauso wenig wie:
int var = 1, 2, 3, 4;Was Du schon brauchst, wäre ein Array.
Ich würde an Deiner Stelle das ganze einfach mit enum, typedefs und Arrays lösen.
Alternativ und wäre noch sauberer bieten sich hierfür auch Strukturen und Klassen an. Bei Klassen könnte man auch gleich noch mit (Mehrfach-)Vererbung arbeiten.
-
Schlitzauge schrieb:
Bei Klassen könnte man auch gleich noch mit (Mehrfach-)Vererbung arbeiten.
Klar, nach Jürgen Wolf erbt Spanien dann natürlich von Europa.
-
Ja, warum denn nicht.

Und Russland von den beiden Kontinent-Klassen.

-
Nein, Europa erbt von Spanien, Deutschland,... .
Es geht ja um Mehrfachvererbung.
-
geschlossen
-
Nein, Europa erbt von Spanien, Deutschland,... .
Es geht ja um Mehrfachvererbung.Kommt drauf an, wie mans designt.
Ich würde als Basisklasse(n) die Kontinente nehmen und als Kind-Klassen die Länder. Aber auch wayne jetzt...
-
Schlitzauge schrieb:
Ich würde als Basisklasse(n) die Kontinente nehmen und als Kind-Klassen die Länder. Aber auch wayne jetzt...
Du hast den Sarkasmus nicht verstanden

Natürlich setzt man hier keine Vererbung ein. Siehe auch LSP und so.
-
geschlossen