0

クラスを自分のバージョンで上書きしてから、そのクラスへのスーパークラス参照を作成しようとしていますが、コンパイルエラーが発生します。これが私のコード構造です

ファイル: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>)))’

私は何が間違っているのですか?

4

1 に答える 1

0

この行の先頭にある * を削除する必要があります。

*mystyle_ = new RailExtractionInteractorStyle;

演算子 new はポインターに直接適用されるため、逆参照する必要はありません。

于 2013-01-18T21:31:33.657 に答える