私はArduinoでcppを使用しています。私はここで起こっている正確に何か分からないが、オブジェクトがパラメータを持たないデフォルトのコンストラクタを探して、その場で作成されているようにそれが表示されたのは、私が"ClassName :: ClassName()"の呼び出しで一致する関数がありません
ClassName o;
としての私の変数を定義しているとしましょう。私は、変数へのポインタを追加した場合、すべてがうまくしかし
no matching function for call to "ClassName::ClassName()"
:
ClassName* o;
はここで何が起こっている私は、したがって、エラーを、このようなデフォルトコンストラクタを持っていませんか?これらのスタイルのそれぞれを活用するための推奨される方法は何ですか?
'ClassName * o;'はコンストラクタを呼び出さず、オブジェクトも作成しません。指定しない限り、オブジェクトが未定義のメモリ位置を指しています – user463035818
'ClassName * o;'は 'std :: unique_ptr o;'または 'std :: shared_ptr o; '。生ポインタを使用しないでください。 –
私は本当にそれらを別のスタイルと呼んでいません。彼らは異なる目的、用途、生涯の意味を持つ異なる種類です。また、自動記憶期間の変数に未処理ポインタを代入することは、痛みを求めることである。 – jaggedSpire