2011-07-27 13 views
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; 
} 
+3

'tiles'メンバーはどこに宣言されていますか?私たちはそれが 'TileMapper'にあると推測する必要がありますか? –

+2

tiles変数はKDTileMapperで宣言されていません。それはTileMapperで宣言されていますか?そうであれば、TileMapperに問題がある可能性があります。そのクラスのコードを投稿できますか? – fbafelipe

+0

あなたのコンパイラは、スコープ内に 'tiles'という名前の宣言がないことを示しているようです。私はそのようなものは見ない。この宣言はどこにあるべきですか?それを見せてもらえますか? –

答えて

0

あなたはTileMapperにプライベートとしてtilesを宣言しましたか?その場合、子クラスがアクセスできるようにpublicまたはprotectedを宣言する必要があります。

関連する問題