【问题标题】:How to pass a vector of objects to another class then call a function from within a member of an object in that vector?如何将对象向量传递给另一个类,然后从该向量中对象的成员中调用函数?
【发布时间】:2013-10-06 19:34:30
【问题描述】:

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

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

Object0 将作为向量的成员在 object1 中创建。

然后,该向量将被传递给 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].function();

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

【问题讨论】:

  • 您只是忘记使用knowvectorobject0vec 放入_object2。然而,整个代码在很多层面上都是错误的......

标签: c++ pointers vector reference callback


【解决方案1】:

在init()中:

“_object2”的生命周期与 object1 相同。 然而,在 init() 中,您可能会将指向局部变量 object0vec 的指针传递给 knowvector()。 所以现在,“_object2”的生命周期比它指向但不拥有的对象更长。 "knowvector" 可以复制向量而不是保留指针。

语法:

在Init()中,“_object2”是一个指针,所以需要使用->。

object2::object0vec 也是一个指针,而“object0vec[0]”可能是为了获取向量中的第一个对象,而不是向量数组中的第一个对象。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2020-09-06
    相关资源
    最近更新 更多