C ++ |没有构造函数的实例匹配参数列表

时间:2016-11-07 21:08:16

标签: c++ arrays class char

我真的不明白这个错误。

我的课程:

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(对象中的第一个参数)错误输出。怎么了?

1 个答案:

答案 0 :(得分:1)

  1. dllNameprocessName在构造函数后保持未初始化状态。 (您实例化两个本地char数组,并使用一个包含完全包含一个 char的字符串来初始化每个数组。当您离开构造函数时,这两个本地数组超出范围,而{{1}如果你想用char-array构造函数参数的内容初始化它们,请使用像Child之类的东西。

  2. 但是strcpy被声明为不接受两个字符数组而是两个字符。这就是为什么程序中的那一行不能编译的原因。

  3. 您是否考虑使用Child::Child代替?