这是编译器错误
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;
答案 0 :(得分:2)
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
已经是{{1}的一部分object(如果它实际上是一个成员变量。但是第二个错误消息说它不是)。
答案 1 :(得分:0)
您应该将私有TILES_TYPE切片放在KDTileMapper类定义中,或者将TILES_TYPE切片放在构造函数中