2013-09-29 2 views
0

나는 배열과 벡터 클래스를 다시 만드는거야, 그리고 기능이 제대로합격 값은

를 작업하는 경우 내가 볼을 테스트하기 위해 만든 객체에 값 전달에 작은 오류가 오전 여기에 코드

template<typename T> 
class stack 
{ 
public: 
void pop() 
    { 
     S1.pop_back(); 
    } 
void push(T &e) 
    { 
     S1.push_back(e); 
    } 
T& top() 
    { 
     counter = S1.Counter(); 
     cout << counter; 
     return S1[counter]; 
    } 
bool empty() 
    { 
     if (S1.Counter() == 0) 
      { 
       return true; 
      } 
     else 
      { 
       return false; 
      } 
    } 
private: 
sean<T> S1; 
int counter; 
}; 

주요 기능에서 개체 호출

int main(int argc, char *argv[]) 
{ 
stack<int> S1; 
S1.push(1); 


return 0; 
} 

난 그냥 "스택"개체 S1을 생성하고 푸시를 호출 할하고 (T & 전자는) 기능을 사용할 수 있지만 오류가 발생합니다.

Initial value of reference to non-const must be an Ivalue 

아마도 간단 할 지 모르지만 도움이 될 것입니다. 고맙습니다.

+0

: 이 문제를 해결합니다. .... "Ivalue"가 아닌'lvalue' : D – dyp

+2

특정 숙제에 대해 고유 한 태그를 사용 했으므로 이번 주말에 "스택 구현"마감 시간을 맞추려는 모든 사람이 함께 밴드를 만들 수 있기를 바랍니다. –

+2

@KerrekSB [Homework overflow] (http://area51.stackexchange.com/proposals/44531/stack-overflow-homework)? – dyp

답변

1

임시 전달하려고하지만 일반적인 참조는 변수 만 바인딩 할 수 있습니다. 그것은 아마 "좌변"가 아닌 "Ivalue"의 오류 메시지에서

void push(T const& e) 
{ 
     S1.push_back(e); 
} 
+0

"변수 만 바인딩 할 수 있습니다"non-const (lvalue-) 참조는 변수가 아닌 lvalues에도 바인딩 할 수 있습니다. 예 : 'int & foo(); int & ref = foo();'또는'int & ref = * (new int);'(결코 후자를하지는 않겠지 만). 변수는 좌변 값이므로 비 const 좌변 치 참조는 변수에도 바인딩 할 수 있습니다. – dyp