Довольно новый для C++, и поэтому это, наверное, действительно глупый вопрос. Мне нужен указатель cube_normals
для доступа к функциям-членам read_models()
и proc_models()
, и указатель должен быть инициализирован каждый раз при вызове read_models()
.Как инициализировать интеллектуальный указатель, являющийся членом класса?
Внутри функции члена я мог бы сделать:
PointCloud<A>::Ptr cube_normals (new PointCloud<A>);
я мог бы передать указатели на другой функции, но есть 12 таких указателей, которые я использую и его, вероятно, не самый чистый способ решить эту проблему.
Это фрагмент кода. Заранее спасибо!
class preproc
{
public:
preproc();
~preproc();
PointCloud<A>::Ptr cube_normals;
void read_models();
void proc_models();
private:
ros::NodeHandle nh;
ros::NodeHandle nh_priv;
};
Поскольку 'read_models()' и 'proc_models()' являются методами одного класса, для них не требуется особого доступа к 'cube_normals', члену того же класса. Они просто получают доступ к нему, как к локальной переменной. Ваш вопрос непонятен. Если у вас нет полного понимания основ C++, лучшим ответом будет продолжение чтения вашей книги на C++ и понимание представленного материала. –
Являются ли ваши другие умные указатели всеми классами «PointCloud :: Ptr' или используются разные типы, а не' A'? –
Если вы спрашиваете, как сбросить 'cube_normals', чтобы он указывал на новый объект, то это' cube_normals.reset (new PointCloud ) ' –