【问题标题】:Visual C++ 2010 Error: LNK2020 Unresolved tokenVisual C++ 2010 错误:LNK2020 未解析的令牌
【发布时间】:2017-05-12 03:55:32
【问题描述】:

我有以下课程:

public ref class Form1 : public System::Windows::Forms::Form
{
//[...]
protected:
System::Void label1_Click(System::Object^  sender, System::EventArgs^  e);
};

public ref class Functions : public Form1
{
protected:
void Example() {}
};

public ref class Handlers : public Functions
{
private:
  System::Void label1_Click(System::Object^  sender, System::EventArgs^  e)
  {
    Example();
  }
};

如您所见,我想将我的方法外部化到其他类中。 错误是:

1>Milionerzy.obj:错误 LNK2020:未解析的令牌 (06000004) Milionerzy.Form1::label1_Click

怎么了?

【问题讨论】:

  • 您需要为Form1::label1_Click 提供定义或将其声明为纯虚拟。
  • 我在 Form1 类中尝试纯虚拟 [code] virtual System::Void label1_Click(System::Object^ sender, System::EventArgs^ e) = 0; [/code] 而且我有很多错误。我正在使用这个解决方案:[link]stackoverflow.com/questions/2652198/…
  • 1> c:\users\michal\documents\visual studio 2010\projects\milionerzy\milionerzy\Form1.h(505) :参见“Milionerzy::Form1::label1_Click”的声明 1> 'void Milionerzy::Form1::label2_Click(System::Object ^,System::EventArgs ^)':是抽象的

标签: visual-studio-2010 c++-cli linker-errors


【解决方案1】:

您可能应该从 Form1 中删除 label1_Click。处理 label1 点击事件根本没有意义,因为您正在考虑使其成为纯虚拟的。只要有能力就处理它。

如果你想在处理程序中实现多态性,请像这样声明另一个纯虚函数:

public ref class Form1 abstract: public System::Windows::Forms::Form 
{
//[...]
protected:
     virtual void OnLabel1Click()=0;
};

public ref class Functions : public Form1
{
protected:
    void Example() 
    {
    }
    virtual void OnLabel1Click() override
    {
        Example();
    }
};

public ref class Handlers : public Functions
{
private:
    System::Void label1_Click(System::Object^  sender, System::EventArgs^  e)
    {
        OnLabel1Click();
    }
};

【讨论】:

  • 感谢您的回复。但在这种情况下,我必须将每个标签(或其他元素)的所有设置放入第一类中才能在设计中看到它必须插入到(公共 System::Windows::Forms::Form)的子类中。我不想要它。
  • 在这种情况下,删除所有抽象属性并处理Form1中的label1单击事件,调用虚拟(但不是纯)OnLabelClick。所以,Form1::OnLabelClick 什么都不做,你将在 Handlers 类中覆盖它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
相关资源
最近更新 更多