Ich habe eine Klasse, die verschiedene Arten von Variablen erstellt.Falscher Konstruktor wird aufgerufen
Und durch einige Makrodefinitionen wollen wir diese Variablen initialisieren.
Zahlen sind initialisiert, aber Strings rufen den Bool-Konstruktor aus unbekannten Gründen auf.
JsonVariable(string x)
: type(String), s(x)
{
cout << "String" << x << endl;
sleep
}
JsonVariable(bool x)
: type(Boolean), b(x)
{
cout << "Boolean" << x << endl;
sleep
}
Wenn ich den Bool-Konstruktor auskommentiere, dann wird die String-Eins aufgerufen.
Irgendwelche Vorschläge?
EDIT: Dies ist ein String-Konstruktor mit den definierten Makros. std :: string wird im Konstruktor verwendet.
JSON(test) = STRING("Hello")
Typ ist eine definierte Enum. Auch Makros müssen als Teil dieser Zuweisung verwendet werden.
EDIT2: Zur Verdeutlichung. Hier ist der Enum-Typ.
std :: string wird mit Namespace std und somit single string verwendet. Auch ist String vom Typ ENUM so
String != string
typedef enum {
Null, Integer, Double, Boolean, String, Object, Array
} datatype;
Nennen Sie es mit einem echten String oder 'const char *' (wie '" myString "')? – lorro
Ist dies 'JsonVariable (String x) : Typ (String), s (x)' kompilieren? –
Außerdem warum verwenden Sie macors –