0
私はクラスメンバーと私の宣言に問題があります。コードの最初のセグメントは、「kdtilemapper.h」のための私のヘッダファイルであるメンバークラスの宣言問題
#ifndef _KDTILEMAPPER_H
#define _KDTILEMAPPER_H
#include "tilemapper.h"
#include "kdtree.h"
class KDTileMapper : public TileMapper{
public:
KDTileMapper(const SourceImage & si,const vector<TileImage> & tiles);
~KDTileMapper();
KDTileMapper(const KDTileMapper & rhs);
KDTileMapper const & operator=(KDTileMapper const & rhs);
int map_tiles(MosaicCanvas & mosaicOut) const;
private:
};
#endif /* _KDTILEMAPPER_H */
コードの以下のセグメントは、私が「タイル」のためのコンパイルでエラーが生じていますどこアスタリスク行がある問題の符号化です宣言されず、タイルはメンバークラスに属さない。
#include "kdtilemapper.h"
#include "kdtree.h"
KDTileMapper::KDTileMapper(const SourceImage & si, const vector<TileImage> & tiles):TileMapper(si,tiles)
{
//TileMapper(si,tiles);
//tileMapKDT=NULL;
}
KDTileMapper::~KDTileMapper(){
}
KDTileMapper::KDTileMapper(const KDTileMapper & rhs):TileMapper(rhs)
{
source = rhs.source;
**tiles = rhs.tiles;** //tiles not declared and not member of const class KDTileMapper
}
KDTileMapper const & KDTileMapper::operator=(KDTileMapper const & rhs)
{
source = rhs.source;
**tiles= rhs.tiles;** //tiles not declared and not member of const class KDTileMapper
return *this;
}
int KDTileMapper::map_tiles(MosaicCanvas & mosaicOut) const{
int check1;
TileImage tempTile1;
TileImage tempTile2;
int rows=source.get_rows();
int columns=source.get_columns();
**if(tiles.empty() || rows<0 || colums<0)** //tiles not declared, neither colums
return -1;
**KDTree<TileImage>* tileMapKDT= new KDTree<TileImage>(tiles[0].get_num_levels());**
//tiles above is not declared
for(int j=0;j< (int)tiles.size();j++)
{
if(!tiles[j].is_valid())
return -1;
}
check1= tileMapKDT->create_tree(tiles);
if(check1<0)
return -1;
mosaicOut=MosaicCanvas(rows,columns);
for(int i=0;i<rows;i++)
{
for(int j=0;j<columns;j++)
{
tempTile1=TileImage(source.get_region_color(i,j));
tempTile2=tileMapKDT->find_nearest_neighbor(tempTile1);
mosaicOut.set_tile(i,j,tempTile2);
}
}
return 0;
}
'tiles'メンバーはどこに宣言されていますか?私たちはそれが 'TileMapper'にあると推測する必要がありますか? –
tiles変数はKDTileMapperで宣言されていません。それはTileMapperで宣言されていますか?そうであれば、TileMapperに問題がある可能性があります。そのクラスのコードを投稿できますか? – fbafelipe
あなたのコンパイラは、スコープ内に 'tiles'という名前の宣言がないことを示しているようです。私はそのようなものは見ない。この宣言はどこにあるべきですか?それを見せてもらえますか? –