0
私は最近、単一のポインタ引数を受け取る明示的なコンストラクタを遭遇しました。この場合、明示的なキーワードが必要なのでしょうか?ポインタのコンストラクタがないので、暗黙の変換はできません。ポインタをとるC++明示的コンストラクタ
class Foo {
public:
explicit Foo(int* int_ptr);
}
私は最近、単一のポインタ引数を受け取る明示的なコンストラクタを遭遇しました。この場合、明示的なキーワードが必要なのでしょうか?ポインタのコンストラクタがないので、暗黙の変換はできません。ポインタをとるC++明示的コンストラクタ
class Foo {
public:
explicit Foo(int* int_ptr);
}
次のコード
void f(Foo) {}
int main()
{
int* p;
f(p);
}
はexplicit
でコンパイルに失敗します。
幸いにもそれなしでコンパイルします。
なぜポインタが他のコンストラクタのパラメータに異なるだろうか? – juanchopanza
'explicit'が必要かどうかは別の問題であり、ポインタであるパラメータとは関係ありません。どの暗黙的な変換を許可したいのですか。 – juanchopanza