私は 2 つのクラスを持っており、一方は他方の中にあり、外側のクラス コンストラクターの本体に内側のクラスを構築したいと考えています。私は正しいコードであるべきだと思うものを持っていますが、それは機能していません。エラー メッセージは、呼び出しに一致する VSL::VSL() がないことを示しているようですが、正しいプロトタイプのようです。
コードは次のようになります。
ヘッダー内:
class VSL
{
VSL(vector<string> &v, string &s);
};
class KVTest
{
VSL vsl;
KVTest(int argc, char *argv[]);
};
体内:
KVTest::KVTest(int argc, char *argv[]) {
vector<string> v;
string s;
vsl(v, s);
}
これは、次のエラー メッセージで失敗します。
src/util/kv-test/kv-test.cpp: In constructor 'KVTest::KVTest(int, char**)':
src/util/kv-test/kv-test.cpp:237: error: no matching function for call to 'VSL::VSL()'
src/util/kv-test/kv-test.cpp:112: note: candidates are: VSL::VSL(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::string&)
src/util/kv-test/kv-test.h:45: note: VSL::VSL(const VSL&)
src/util/kv-test/kv-test.cpp:347: error: no match for call to '(VSL) (std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::string&)'
237 行目は KVTest コンストラクター宣言です 347 行目はそのコンストラクター内で vsl コンストラクターが呼び出される行です 112 行目は VSL コンストラクター宣言です ヘッダーの 45 行目は { VSL クラスの開始です VSL の明示的なコピー コンストラクターはありません