コンパイラの警告 (レベル 4) C4564

クラス 'class' のメソッド 'method' は、サポートのない既定のパラメーター 'parameter' を定義します

1 つ以上のパラメーターが既定値であるメソッドがコンパイラによって検出されました。 メソッドが呼び出されると、パラメーターの既定値は無視されます。これらのパラメーターの値を明示的に指定してください。 これらのパラメーターの値を明示的に指定しない場合、C++ コンパイラはエラーを生成します。

Visual Basic で作成され、メソッドの引数で既定のパラメーターを許可している次の .dll を考えます。

' C4564.vb
' compile with: vbc /t:library C4564.vb
Public class TestClass
   Public Sub MyMethod (a as Integer, _
                        Optional c as Integer=1)
   End Sub
End class

次の C++ の例では、Visual Basic で作成された .dll を使用しています。

// C4564.cpp
// compile with: /clr /W4 /WX
#using <C4564.dll>

int main() {
   TestClass ^ myx = gcnew TestClass();   // C4564
   myx->MyMethod(9);
   // try the following line instead, to avoid an error
   // myx->MyMethod(9, 1);
}