我有两个类,一个在另一个中,我想在外部类构造函数的主体中构造内部类。我有我认为应该是正确的代码,但它不起作用。该错误消息似乎告诉我没有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&)'
第2行37是KVTest的构造函数声明 第347行是该构造函数中被调用的构造函数的行 第112行是VSL构造函数声明 头的第45行是{开始VSL类 我没有显式复制VSL的构造函数
所有的构建和变量返回的对象的副本这个例子是私有的。这是问题吗? – pmr