2016-11-17 4 views
-3

を設定してやるん私持っている私はで動作するようにしようとしているAPIの次の行:私はコンパイルするとき(ビルド)私はエラーがあります。 Hファイルにはデフォルトコンストラクタは、どのように私は、有効なコンストラクタ

public value struct DeviceInfo 
{ 
    Byte DeviceCompatibility; 
    Size imageSize; 

    static initonly DeviceInfo Empty = { (Size::Empty, 0) }; 
}; 

私はエラーを取得するプロジェクトを

System::Drawing::Size

なし適切なデフォルトコンストラクタコードは、ああファイル内にあります。誰かが私が何をすべきかを助けることができますか?私はVS 2015で働いています。

+0

を試してみてくださいデータメンバを初期化するために同じ静的データメンバSize::Emptyを使用することができると思います。 YoyはどのAPIを使用しているのか、おそらくこのコードを呼び出してより多くのコンテキストを呼び出す方法から始めることができます – jimmy

答えて

0

あなたはどんな言語のような情報を追加したいかもしれません。

これはC++/cliだと思います。あなたが直面している問題は、典型的なC++の問題です。「サイズ」は単純な「struct Size」によって導入されたタイプです。適切な定義なしに。

それはあなたができることがあります「構造体のサイズ{...}」

のようになります。これは、「サイズ」の定義を提供するヘッダを含めることができない、あなたが引用され、ヘッダにエラーになります引用符で囲まれたヘッダーファイルをインクルードする上に1行だけ他のヘッダーファイルを含めることで、あなたの問題を解決してください。このC++/CLI値クラス定義で

+0

"どの言語のような情報を追加したいでしょうか?" – George

+0

はい、タグC++/cliがありますが、それはそこにあったとは思いません。 – Ingo

+0

また、私の答えは間違っていると思います。 Vladはそれが正しいと思う。 – Ingo

0

public value struct DeviceInfo 
{ 
    Byte DeviceCompatibility; 
    Size imageSize; 

    static initonly DeviceInfo Empty = { (Size::Empty, 0) }; 
}; 

タイプSizeのデータメンバーimageSizeがあります。コンパイラのエラーメッセージには、このクラスのデフォルトのコンストラクタがないことを示しています。

このデータメンバーを明示的にクラス定義で初期化するか、このデータメンバーを初期化するクラスコンストラクターを作成する必要があります。各コンストラクタは、引数または引数を指定する必要があなたが見ることができるように

Sizeクラスの説明によれば、次のコンストラクタ

Size(Int32, Int32) 
Size(Point) 

を持っています。

私は、私たちはあなたを助けることができるように、ここでより多くの情報が必要だと思うあなたはimageSize

は、例えば

Size imageSize = Size::Empty; 
関連する問題