【问题标题】:Passing an object between winforms in c++在c ++中的winforms之间传递对象
【发布时间】:2017-12-28 17:52:27
【问题描述】:

我一直在尝试将名为Facade 的单例类的对象从Form1 传递到Form2。是的,这是一个广泛讨论的话题,但是所有网站都在 c# 中解决了这个问题,我尝试在 c++ 中调整这些技术,但它不起作用,尽管它们在 c# 中工作。 在Form1

    ...
    textBox1->Text=f.getVars1().ToString();
    Form2^ f2=gcnew Form2(f);//error 5
    ...

Form2

    Facade f1;
    Form2(Facade f2)
    {

        InitializeComponent();
        f1=f2;//error 3

    }   

Form2按钮事件中textBox1->Text=f1.getVars1().ToString();
当我尝试时它会显示这些错误

    Error   3   error C2679: binary '=' : no operator found which takes a 
    right-hand operand of type 'Facade' (or there is no acceptable 
    conversion) 
    Error   5   error C2664: 'FacadeCheck::Form2::Form2(Facade)' : cannot 
    convert parameter 1 from 'Facade' to 'Facade'   

而且我几乎尝试了所有解决方案,所以请任何人尝试在c++ 中解决这个问题,这将是一个很大的帮助。我使用 2010 版的 ms visual studio...任何帮助表示赞赏,在此先感谢。

【问题讨论】:

  • Facade 显然不可复制。
  • @user0042 那么,你建议我怎么解决呢?

标签: c++ winforms parameter-passing


【解决方案1】:

您需要将对象作为 gc 引用传递和存储。在 Form2 中:

Facade ^ f1;
Form2(Facade ^ f2)
{
  ...
  f1 = f2;
}

【讨论】:

  • 是的,我试过了..但它也给出了错误。由于我将Facade 作为引用传递,因此我在声明它时将它声明为Form1 中的引用Facade^ f;。然后,在按钮事件方法textBox1->Text=f->getVars1().ToString();Form2^ f2=gcnew Form2(f);。然后在Form2,我做了你提到的那些改变,在form2textBox1->Text=f1->getVars1().ToString();.的按钮事件方法中。
  • 但它得到了像error LNK2020: unresolved token (06000012) Facade::op_Assign 这样的错误。我现在该怎么办?
猜你喜欢
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多