如何将对象向量传递给另一个类,然后从该向量中的对象成员中调用一个函数?

时间:2013-10-06 19:34:31

标签: c++ pointers vector reference callback

如何通过函数调用将向量传递给另一个类中的向量的指针,并通过接收类调用函数或元素;以及如何远程调用接收类中的该函数?

在此示例中,object0是一个包含将被调用的函数的对象类型。

Object0将在object1中创建为vector的成员。

然后该向量将传递给object2,其中它将从外部对象调用;这里任意选择object1;

main()只是启动此应用程序的一种方式,我欢迎有关改进它的建议。

#include <vector> 
class object0
{
protected:
    int a;
    void function()
    {
        std::cout << "function called" << std::endl;
    }
};

class object2
{
    public:
    std::vector<object0> *object0vec;
    void knowvector(std::vector<object0> *_object0vec)
    {
        object0vec = _object0vec;
    }
};

class object1
{
public:
    object2* _object2;
    object1()
    {
        _object2 = new object2;
    }
    void init()
    {
        std::vector<object0> object0vec;
        object0vec.push_back(new object0)
        _object2.object0vec[0].function();

如何使这条线路正常工作? _object2.object0vec [0]。功能();

    }
};
int main()
{
    object1 newobject1;
    object1 &ref_newobject1 = newobject1;
    ref_newobject1.init();
}

1 个答案:

答案 0 :(得分:0)

在init()中:

“_ object2”的生命周期与object1相同。 然而,在init()中,你可能会将指向本地变量object0vec的指针传递给knowvector()。 所以现在,“_ object2”的生命周期比它有一个更有意义的对象更长,但却不拥有。 “knowvector”可以复制矢量而不是保留指针。

语法:

在Init()中,“_ object2”是一个指针,所以你需要使用 - &gt;。

object2 :: object0vec也是一个指针,而大概是“object0vec [0]”意味着获取向量中的第一个对象,而不是向量数组中的第一个对象。

_object2 -> (*object0vec)[0].function();