2017-10-10 7 views
0

私は最近、単一のポインタ引数を受け取る明示的なコンストラクタを遭遇しました。この場合、明示的なキーワードが必要なのでしょうか?ポインタのコンストラクタがないので、暗黙の変換はできません。ポインタをとるC++明示的コンストラクタ

class Foo { 
public: 
    explicit Foo(int* int_ptr); 
} 
+3

なぜポインタが他のコンストラクタのパラメータに異なるだろうか? – juanchopanza

+2

'explicit'が必要かどうかは別の問題であり、ポインタであるパラメータとは関係ありません。どの暗黙的な変換を許可したいのですか。 – juanchopanza

答えて

6

次のコード

void f(Foo) {} 

int main() 
{ 
    int* p; 
    f(p); 
} 
  • explicitでコンパイルに失敗します。

  • 幸いにもそれなしでコンパイルします。

live example on godbolt.org

関連する問題