使用变量类型的std :: function运行线程

时间:2016-03-15 22:59:11

标签: c++ c++11 stdthread

我想在一个单独的线程中启动一个std :: function类型。 我的代码目前看起来像这样:

by=rownum

为什么我会尝试在此处使用已删除的功能?

1 个答案:

答案 0 :(得分:3)

您的变量struct bar { std::function<void(int,int)> var; }; struct foo { bar* b; foo() { std::thread t(b->var, 76, 89); // will call b->var(76, 89) } }; 是一个带有两个参数的函数。您需要发送这些参数才能使其正常工作。

public class Aclass
{
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }
}

public class Bclass : Aclass
{
    public Bclass(Aclass aInstance)
    {
        CopyPropertiesFromAltInstance(aInstance);
    }

    public void CopyPropertiesFromAltInstance(Aclass aInstance)
    {
        PropertyInfo[] aProperties = aInstance.GetType().GetProperties();
        PropertyInfo[] myProperties = this.GetType().GetProperties();
        foreach (PropertyInfo aProperty in aProperties)
        {
            foreach (PropertyInfo myProperty in myProperties)
            {
                if (myProperty.Name == aProperty.Name && myProperty.PropertyType == aProperty.PropertyType)
                {
                    myProperty.SetValue(this, aProperty.GetValue(aInstance));
                }
            }
        }
    }
}