2016-11-07 36 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(オブジェクト内の最初の引数は)アウトerroringれます。なにが問題ですか?

+3

まあ、 'のchar [250]' 'char'と同じではありません。 –

+0

'std :: string'を使って、あなたの苦痛のいくつかを解決します。 – drescherjm

答えて

1
  1. dllNameprocessNameは、コンストラクタの後に初期化されていないご利用いただけます。 (ローカルの2つのchar配列をインスタンス化し、正確にの文字列を1つずつという文字列で初期化します。コンストラクタを終了すると、2つのローカル配列が範囲外になり、Childオブジェクトはほとんど初期化されません。 のように、char配列のコンストラクタ引数の内容で初期化したい場合に使用します。

  2. しかし、は、2つのchar配列を受け入れないと宣言されています。これは、プログラム内のその行がコンパイルされない理由です。

  3. あなたの代わりにstd::string Sを使用して考えられていますか?...

関連する問題