ホームページ  >  記事  >  バックエンド開発  >  C++ コンパイル エラー「クラス 'ClassName' にはパラメーターを含むコンストラクターがありません」を解決する方法はありますか?

C++ コンパイル エラー「クラス 'ClassName' にはパラメーターを含むコンストラクターがありません」を解決する方法はありますか?

WBOY
WBOYオリジナル
2023-08-26 08:15:321024ブラウズ

解决C++编译错误:\'class \'ClassName\' does not have a constructor with parameters\',如何解决?

C コンパイル エラーの解決策:「クラス 'ClassName' にはパラメーターを持つコンストラクターがありません」。どうすれば解決できますか?

C でプログラムを作成すると、コンパイル エラーが頻繁に発生します。よくあるエラーの 1 つは、「'クラス 'ClassName' にはパラメーターを持つコンストラクターがありません'」です。つまり、クラスにはパラメーターを持つコンストラクターがありません。このエラーは通常、クラスのオブジェクトを使用し、コンストラクターにパラメーターを渡す必要があるが、クラスのコンストラクターがパラメーター化されたバージョンを定義していない場合に発生します。この記事では、この問題を解決するいくつかの方法と、対応するコード例について説明します。

方法 1: パラメーターを使用してコンストラクターを定義する

最も直接的な解決策は、クラスのパラメーターを使用してコンストラクターを定義することです。このようにして、このクラスのオブジェクトをインスタンス化するときに、コンストラクターにパラメーターを渡すことができます。以下に例を示します。

class ClassName {
public:
  int data;

  // 默认构造函数
  ClassName() {
    data = 0;
  }

  // 带参数的构造函数
  ClassName(int value) {
    data = value;
  }
};

int main() {
  ClassName obj(10);  // 使用带参数的构造函数
  return 0;
}

この例では、クラス ClassName を定義します。これには、タイプ intdata## のデータ メンバーが含まれています # 。コンストラクターをオーバーロードすることにより、デフォルトのコンストラクターとパラメーター付きのコンストラクターを定義します。 ClassName クラスのオブジェクト obj をインスタンス化するとき、パラメーター化されたコンストラクターを使用し、それにパラメーター 10 を渡します。

方法 2: デフォルトのパラメーターを提供する

パラメーターを使用してコンストラクターを定義することに加えて、コンストラクターのパラメーター リストにデフォルト値を設定することもできます。これにより、オブジェクトをインスタンス化するときに、パラメーターは永続的に渡されることを選択できます。以下に例を示します。

class ClassName {
public:
  int data;

  // 默认构造函数
  ClassName(int value = 0) {
    data = value;
  }
};

int main() {
  ClassName obj1;      // 使用默认构造函数
  ClassName obj2(10);  // 使用带参数的构造函数
  return 0;
}

この例では、コンストラクター パラメーター

value にデフォルト値 0 を設定します。 ClassName クラスを使用してオブジェクト obj1 をインスタンス化する場合、パラメーターは渡されないため、デフォルトのコンストラクターが呼び出され、オブジェクト obj2 がインスタンス化されると、 、パラメータが渡されます パラメータ 10 が渡されるため、パラメータを持つコンストラクタが呼び出されます。

方法 3: 初期化リストを使用する

もう 1 つの解決策は、初期化リストを使用して、クラス定義内でデータ メンバーを直接初期化することです。以下に例を示します。

class ClassName {
public:
  int data;

  // 默认构造函数
  ClassName(int value) : data(value) {}
};

int main() {
  ClassName obj(10);  // 使用带参数的构造函数
  return 0;
}

この例では、コンストラクターでパラメーターを持つ初期化リストを使用して、データ メンバー

data を初期化します。このようにして、ClassName クラスのオブジェクト obj をインスタンス化すると、パラメータ 10data に直接割り当てられます。

これら 3 つの方法を通じて、「C コンパイル エラー: 'クラス 'ClassName' にはパラメーターを持つコンストラクターがありません」という問題を解決できます。プログラムをスムーズにコンパイルして実行できるように、実際のニーズに応じて適切な方法を選択してください。

以上がC++ コンパイル エラー「クラス 'ClassName' にはパラメーターを含むコンストラクターがありません」を解決する方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。