自分自身に賛成票を投じたりコメントしたりするのに十分なサイト経験はまだありませんが、DRapp の回答は私の問題を解決しました。元の質問は少し漠然としているので、私が見ているものをもう少し詳しく説明したいと思いました:
C# で作成されたクラス ライブラリを参照するメトロ アプリケーションを C++ で作成しています。C# モジュールからエクスポートされたオブジェクトの作成は、コンストラクターにパラメーターがない限り、正常に機能していました。
// C# file exported to .winmd class library for use in metro app
namespace A
{
public sealed class B
{
public B(bool bTest)
{}
// Other methods/members...
}
}
// C++ metro app referencing .winmd created from C# above
...
A::B^ spB = ref new A::B(bTest); // Throws an exception
C++ で C# モジュールからタイプ B のオブジェクトを作成しようとすると、例外がスローされ、出力ログにやや不可解な「WinRT 変換エラー」が表示されます。
これを修正するために、DRapp が提案したことを実行して、デフォルトのコンストラクターを B に追加することができました。
// C# file exported to .winmd class library for use in metro app
namespace A
{
public sealed class B
{
public B()
{}
public B(bool bTest)
{}
// Other methods/members...
}
}
もう例外ではありません。:)