Also komme ich aus Java, lernen C++. Ich möchte ein Programm implementieren, die wie folgt aufgerufen werden kann, durch eine Test-Datei zur Verfügung gestellt (Stiefel):Konstruieren von Objekten in C++
auto subject = anagram::anagram("diaper");
auto matches = subject.matches({"hello", "world", "zombies","pants"});
vector<string> expected;
BOOST_REQUIRE_EQUAL_COLLECTIONS(expected.begin(), expected.end(), matches.begin(), matches.end());
Sehe ich es richtig, dass anagram::anagram(...)
ein Konstruktor ist, ein Objekt erstellt, die die Methode matches(...)
bietet? Weil ich in meiner Implementierung (siehe unten) einen Fehler bekomme, der etwas sagt (nicht in Englisch) wie "Konstruktor kann nicht direkt aufgerufen werden". Ich denke, dass ich etwas über Konstruktoren in C++ nicht verstehe.
// this is part of my implementation of anagram.h
class anagram{
public:
anagram(const string a);
vector<string> matches(vector<string> &list);
private:
string a;
bool isAnagram(string s);
};
Das einzige, was ich weiß, ist, dass anagram::anagram(...)
eine statische Methode sein könnte, mit einem Rückgabewert, den similat zu this
ist, aber das würde keinen Sinn für mich machen. So wäre es schön, wenn jemand diese :)
'auto subject = Anagramm :: Anagramm (" Windel ");' ist kein gültiger Konstruktoraufruf. –
Es könnte eine Factory-Funktion im Namespace sein. –
Typo; Konstruktoren werden wie 'ClassName (stuff)' oder 'ClassName {stuff}' "aufgerufen". Sie qualifizieren den Anruf nicht als 'CalssName :: ClassName (stuff) – NathanOliver