我真的不明白这个错误。
我的课程:
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
(对象中的第一个参数)错误输出。怎么了?
答案 0 :(得分:1)
dllName
和processName
在构造函数后保持未初始化状态。 (您实例化两个本地char数组,并使用一个包含完全包含一个 char的字符串来初始化每个数组。当您离开构造函数时,这两个本地数组超出范围,而{{1}如果你想用char-array构造函数参数的内容初始化它们,请使用像Child
之类的东西。
但是strcpy
被声明为不接受两个字符数组而是两个字符。这就是为什么程序中的那一行不能编译的原因。
您是否考虑使用Child::Child
代替?