私はカスタムコントロールを含むdllを構築するために使用される2つのクラスResizeLabelとResizePanelを持つヘッダーファイル 'Custom.h'を持っています。私はResizeLabel内のカスタム:: ResizePanelを使用する場合、それは失敗している:同じName.hファイルのName :: Class2のName :: Class1の使用は失敗します
error C2039: 'ResizePanel' : is not a member of 'Custom'
Errorlistに警告もあります:
Exception of type 'System.Exception' was thrown
私は警告が関連していることを想像してみてください。 Visual Studioがカスタム:: ResizePanelを含むDLLをコンパイルしているコードからロードしようとしている可能性がありますか?次のように
コードは次のとおりです。
namespace Custom {
public ref class ResizeLabel : public System::Windows::Forms::Label
{
protected: virtual void OnTextChanged(System::EventArgs^ e) override {
__super::OnTextChanged(e);
// Not elegant I know,
// but this is just to force the panel to process the size change
dynamic_cast<Custom::ResizePanel^>(this->Parent)->CurrentWidth = 0;
}
...
};
public ref class ResizePanel : public System::Windows::Forms::Panel
{ ... };
}
私はちょうど報告されたエラーの数を減らすために、それはdynamic_castました。
この問題を回避するにはどうすればよいですか?
原則的に正しいですが、クラス外のオーバーライドへのコンパイラオブジェクト – bobinski
間違った入力を押しました - この複数行のボックスが次の行に移動することを期待していました!私はこれよりも優れたコンパイラに慣れています。ファイルを2回解析する必要があります。最後の関数は 'void ResizeLabel :: OnTextChanged(System :: EventArgs^e)を読み込む必要があります。 { __super :: OnTextChanged(e); //私が知っているエレガントではない //これは、パネルがサイズ変更を処理するように強制することです。 dynamic_cast(this-> Parent) - > CurrentWidth = 0; } ' –
bobinski
ありがとう@bobinski、fixed –