Как передать вектор через вызов функции указателю на вектор в другом классе и вызвать функцию или элемент через принимающий класс; и как вызывать эту функцию в принимающем классе удаленно?
В этом примере object0 - это тип объекта, содержащий функцию, которая будет вызываться.
Object0 будет создан в объекте1 как член вектора.
Затем этот вектор будет передан объекту2, в котором он будет вызываться из внешнего объекта; здесь произвольно выбран как внутри объекта 1;
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();
}
В init():
"_object2" имеет время жизни такое же, как object1. Тем не менее, в init() вы предположительно передадите указатель на локальную переменную object0vec на knowvector(). Итак, теперь "_object2" имеет более длительный срок службы, чем объект, к которому у него есть poiner, но он не принадлежит. "knowvector" мог бы сделать копию вектора вместо сохранения указателя.
Синтаксис:
В Init() "_object2" является указателем, поэтому вам нужно использовать ->.
object2 :: object0vec также является указателем, но предположительно "object0vec [0]" предназначен для получения первого объекта в векторе, а не первого в массиве векторов.
_object2 -> (*object0vec)[0].function();