C++ |没有构造函数的实例匹配参数列表
问题描述:
我真的不明白这个错误。C++ |没有构造函数的实例匹配参数列表
我的类:
class Child : public Parent {
private:
char dllName[250];
char processName[250];
public:
Child(char dllNameL, char processNameL) {
char dllName[] = { dllNameL };
char processName[] = { processNameL };
}
}
我的用法:
char colDllName[250] = {};
char colProcessName[250] = {};
cout << "Enter DLL name: ";
cin >> colDllName;
cout << "Enter process name: ";
cin >> colProcessName;
Child info(colDllName, colProcessName);
问题
论my usage
最后一行,则colDllName
(在对象的第一个参数)的示数出。哪里不对?
答
dllName
和processName
留构造函数初始化后。 (你实例化两个本地字符数组,然后用一个字符串初始化每个字符串,该字符串恰好包含一个 char。当您离开构造函数时,这两个本地数组超出范围,并且您的Child
对象基本上未初始化。像strcpy
如果你想用char-array构造函数参数的内容初始化它们。但是
Child::Child
被声明为不接受两个字符数组而是两个字符。这就是为什么程序中的那一行不能编译的原因。你有没有使用
std::string
!而非考虑?..
好了,'的char [250]'是不一样的'char'。 –
使用'std :: string',你的一些痛苦就会解决。 – drescherjm