2016-11-07 135 views
-4

我真的不明白這個錯誤。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(在對象的第一個參數)的示數出。哪裏不對?

+3

好了,'的char [250]'是不一樣的'char'。 –

+0

使用'std :: string',你的一些痛苦就會解決。 – drescherjm

回答

1
  1. dllNameprocessName留構造函數初始化後。 (你實例化兩個本地字符數組,然後用一個字符串初始化每個字符串,該字符串恰好包含一個 char。當您離開構造函數時,這兩個本地數組超出範圍,並且您的Child對象基本上未初始化。像strcpy如果你想用char-array構造函數參數的內容初始化它們。

  2. 但是Child::Child被聲明爲不接受兩個字符數組而是兩個字符。這就是爲什麼程序中的那一行不能編譯的原因。

  3. 你有沒有使用std::string!而非考慮?..

相關問題