我有兩個類,一個在另一箇中,我想在外部類構造函數的主體中構造內部類。我有我認爲應該是正確的代碼,但它不起作用。該錯誤消息似乎告訴我沒有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