不知道如何申报

Not sure how to declare

本文关键字:何申报 不知道      更新时间:2023-10-16

以下是编译器错误

kdtilemapper.cpp:14: error: 'tiles' was not declared in this scope
kdtilemapper.cpp:17: error: 'const class KDTileMapper' has no member named 'tiles'

这是有问题的代码。

KDTileMapper::KDTileMapper(const KDTileMapper & rhs):TileMapper(rhs,tiles)
{
source = rhs.source;
tiles = rhs.tiles;
}

这是类

class KDTileMapper : public TileMapper
{
public:
    KDTileMapper( const SourceImage & si,const vector<TileImage> & tiles);
    ~KDTileMapper();
    KDTileMapper(const KDTileMapper & rhs & tiles);
    KDTileMapper const & operator=(KDTileMapper const & rhs);
    int map_tiles(MosaicCanvas & mosaicOut) const;
private:
    KDTree<TileImage>* tileMapKDT;
KDTileMapper::KDTileMapper(const KDTileMapper & rhs):TileMapper(rhs,tiles)

您正在将参数rhs, tiles传递给基类TileMapper构造函数。但是编译器不知道标识符tiles是什么

也许你的意思是

KDTileMapper::KDTileMapper(const KDTileMapper & rhs):TileMapper(rhs,rhs.tiles) 
                                                                 // ^^^ newly added.

但是,如果您只是通过引用使TileMapper构造函数只接收一个类型为KDTileMapper的const参数,则根本不需要进行修改,因为tiles已经是rhs对象的一部分(如果它实际上是一个成员变量。但第二条错误消息说它不是(。

您应该将私有TILES_TYPE瓦片放在KDTileMapper类定义中,或者将TILES_TYPE瓦片放在构造函数中