Я пытаюсь переписать класс своей собственной версией, а затем создать ссылку на суперкласс для этого класса, но получаю ошибку компиляции. Вот моя структура кода
Файл: RailExtractionInteractorStyle.h (это мой подкласс, который наследует суперкласс PCLVisualizerInteractor)
#include<pcl/visualization/interactor_style.h>class RailExtractionInteractorStyle : public pcl::visualization::PCLVisualizerInteractorStyle
{
public:
RailExtractionInteractorStyle();
};
Файл: RailExtractionInteractor.cpp:
#include "RailExtractionInteractorStyle.h"
RailExtractionInteractorStyle::RailExtractionInteractorStyle()
: pcl::visualization::PCLVisualizerInteractorStyle()
{
// just calling super constructor for now
}
Файл: CloudPointPicker.hpp (произвольный класс, который использует класс RailExtractionInteractorStyle)
#include "RailExtractionInteractorStyle.h"
template <typename PointT>
class CloudPointPicker {
protected:PointCloudTConstPtr cloud_;
boost::shared_ptr<pcl::visualization::PCLVisualizer> myview_;//attempting to write my own interactor
RailExtractionInteractorStyle* mystyle_;
public:
CloudPointPicker() {
*mystyle_ = new RailExtractionInteractorStyle;
}
Оператор в конструкторе CloudPointPicker выдает мне следующую ошибку:
error: no match for ‘operator=’ in ‘*((CloudPointPicker<pcl::PointXYZ>*)this)->CloudPointPicker<pcl::PointXYZ>::mystyle_ = (operator new(480u), (<statement>, ((RailExtractionInteractorStyle*)<anonymous>)))’
Что я делаю неправильно?
Вы должны удалить * в начале этой строки:
*mystyle_ = new RailExtractionInteractorStyle;
Оператор new применяется к указателю напрямую, вам не нужно разыменовывать его.
Других решений пока нет …