2012-02-16 2 views
1

파생 클래스 r_iter 및 c_iter의 반복자를 올바르게 선언 했습니까? 파생 클래스 내에서 r_iter는 2D 벡터의 반복자이고 c_iter는 2D 벡터에 반복자입니다.파생 클래스 객체에 반복자를 선언하는 방법은 무엇입니까?

나는 다음과 같은 오류를 받고 있어요 누군가가 내가

add_round_key.cpp:26:34: error: expected class-name before ‘{’ token 
add_round_key.cpp:27:2: error: ‘dVector’ is not a template 
add_round_key.cpp:27:11: error: ‘dVector’ is not a template 
add_round_key.cpp:27:28: error: invalid use of ‘::’ 
add_round_key.cpp: In member function ‘void dVector::RotWord()’: 
add_round_key.cpp:37:2: error: ‘r_iter’ was not declared in this scope 
add_round_key.cpp:37:17: error: ‘class dVector’ has no member named ‘begin’ 
add_round_key.cpp:38:2: error: ‘c_iter’ was not declared in this scope 





line# 26 class dVector:public std::vector { 
line# 27    dVector <dVector <int> >::iterator r_iter; 
        dVector <int>::iterator c_iter; 

         public: 
         void RotWord(); 
         void SubWord(); 
       }; 

      void dVector::RotWord() { 
        int temp ; 
line# 37   r_iter = this->begin(); 
    #38   c_iter = (*r_iter).end(); 
       *(c_iter) = *(c_iter+4); 
       *(c_iter+4) = *(c_iter+8); 
      } 


      void dVector::SubWord(){ 
       //function definition 
     } 

    int main (int argc, char *argv[]) 
    { 

     /*wordArray is a 4x4 word array stored in column-order form*/ 
     dVector <dVector <int> > wordArray(4,dVector<int>(40,0)); 
     dVector <dVector <int> >::iterator ckIter,i ,j, row_iter; 
     dVector <int>::iterator ii,jj, col_iter; 
     wordArray.RotWord(); 
     wordArray.Subword(); 
    } 

답변

2

: std::vector 당신이 그것을 당신이 상속 할 수있는 클래스 만들에 전문으로 무엇을 말할 필요가 템플릿입니다.

라인 (26) 보너스 : 표준 컨테이너

라인 (27)에서 상속 피하십시오 : dVector 템플릿인가? 그렇지 않다면 마치 사용하는 것처럼 사용할 수 없습니다!

줄 37-38 : 줄 27과 28의 오류로 인해 r_iterc_iter이 선언되지 않으므로이 줄에 나타나는 오류가 발생합니다.

말했다

, 이것은 당신이 당신이 뭘하려는 건지 수행하는 데 도움이 될 수 있습니다

template<class T> 
class dVector : public std::vector<T> { 
    typename dVector <dVector <T> >::iterator r_iter; 
    typename dVector <T>::iterator c_iter; 

하지만 조언은 여전히 ​​don't inherit from std containers 남아있다.

+0

고맙습니다. 나는 컨테이너와 수업을 같은 방식으로 다루었 다. 의견을 보내 주셔서 고맙습니다. –

0

난 당신이 그것에서 상속 전에 std::vector에 템플릿 유형을 지정 잊고 있다고 생각 틀렸다 위치를 알려줍니다 있다면 정말 감사하겠습니다 . 선 (26)

class dVector:public std::vector {  // Not valid 

class dVector:public std::vector<int> { // Valid 
관련 문제