У меня есть заголовочный файл 'Custom.h' с двумя классами, ResizeLabel и ResizePanel, используемые для создания библиотеки DLL, содержащей пользовательские элементы управления. Если я использую Custom :: ResizePanel в ResizeLabel, то происходит сбой:
error C2039: 'ResizePanel' : is not a member of 'Custom'
В списке ошибок также есть предупреждение:
Exception of type 'System.Exception' was thrown
Я полагаю, что предупреждение имеет отношение Может ли это быть из-за того, что Visual Studio пытается загрузить dll, которая содержит Custom :: ResizePanel, из кода, который она компилирует, который ее содержит?
Код выглядит следующим образом:
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, чтобы уменьшить количество сообщений об ошибках.
Как мне лучше избежать этой проблемы?