不知道如何申报

时间:2011-07-27 00:18:20

标签: c++ declaration

这是编译器错误

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;

2 个答案:

答案 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切片放在构造函数中