私はJavaから来て、C++を学んでいます。私は、テストファイルによって提供されるこのように呼び出すことができるプログラム、(ブーツ)を実装したい: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());
私はanagram::anagram(...)
の方法matches(...)
を提供するオブジェクトを構築し、コンストラクタであること、それが正しいのですか?私の実装(下記参照)では、 "コンストラクタを直接呼び出すことはできません"のようなもの(英語ではない)を表示するエラーが発生するためです。私はC++のコンストラクタについて私が理解していないことがあると思います。
// 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);
};
私が知っている唯一の他の事はthis
にsimilatされる戻り値で、anagram::anagram(...)
は静的メソッドである可能性があることですが、それは私には意味がありません。誰かがこれを説明できるのであれば、それはいいだろう:)
'auto subject = anagram :: anagram(" diaper ");'は有効なコンストラクタ呼び出しではありません。 –
名前空間内のファクトリ関数である可能性があります。 –
Typo;コンストラクターは 'ClassName(stuff)'や 'ClassName {stuff}'のように "呼び出されます"。 'CalssName :: ClassName(stuff) – NathanOliver