我有两个类,一个在另一个类中,我想在外部类构造函数的主体中构造内部类。我有我认为应该是正确的代码,但它不起作用。错误消息似乎告诉我没有与我的调用匹配的 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 复制构造函数