2009-10-11 6 views
1

내가 추가 기능을 사용하려고하고 그것에서 목록을 반환하려고 할 때마다. 정의되지 않은 기호 오류가 발생합니다. 내가 여기서 잘못하고있는 것은 무엇인가. 파일 정의되지 않은 첫 번째 참조 기호목록을 반환 <int> 함수에서 C++

add(std::list<int, std::allocator<int> > const&, std::list<int, std::allocator<int> >)/var/tmp//cc78hUrW.o 

LD :

이이 오류가 치명적 : 기호 오류를 참조. 출력이 collect2를 이는 a.out에 기록되지 : LD 당신이 여기 add()를 선언 할 때 대신 &$를 사용하는 1 종료 상태

#include <iostream> 
#include <list> 
#include <math.h> 

using namespace std; 

list<int> add(const list<int> &lhs, const list<int> $rhs); 
list<int> sub(const list<int> &lhs, const list<int> $rhs); 
list<int> mul(const list<int> &lhs, const list<int> &rhs); 

int main(int argc, char* argv[]) 
{ 
    /*variables*/ 
    list<int> num1, num2, num3; 
    list<int> ::iterator it1, it2, it3; 
    char temp[1001]; 
    int x = 0, y = 0; 

    it1 = num1.begin(); 

    for(x = 0; x <= 1001; x++) 
     temp[x] = -42; 

    cout << "Number 1: "; 
    cin >> temp; 

    for(x = 0; temp[x] != -42; x++) 
     num1.insert(it1, temp[x] - '0'); 

    for(x = 0; x <= 1001; x++) 
     temp[x] = -42; 

    cout << "Number 2: "; 
    cin >> temp; 

    it2 = num2.begin(); 

    for(x = 0; temp[x] != -42; x++) 
     num2.insert(it2, temp[x] - '0'); 

    it1 = num1.end(); 
    it1--; 
    num1.erase(it1); 

    for(it1 = num1.begin(); it1 != num1.end(); it1++) 
     cout << *it1; 
    cout << endl; 

    it2 = num2.end(); 
    it2--; 
    num2.erase(it2); 

    for(it2 = num2.begin(); it2 != num2.end(); it2++) 
    cout << *it2; 
    cout << endl; 

    num3 = add(num1, num2); 

    for(it3 = num3.begin(); it3 != num3.end(); it3++) 
    cout << *it3; 
    cout << endl; 

    return 0; 
    } 

    list<int> add(const list<int> &lhs,const list<int> &rhs) 
    { 
    /*Variables*/ 
    list<int> left = lhs; 
    list<int> right = rhs; 
    list<int> answer; 
    list<int>::iterator itl, itr, ans; 
    int cary = 0; 
    int sum = 0; 
    int lfint = 0, rtint = 0; 
    int lsize=0, rsize=0; 

    lsize = (int)left.size(); 
    rsize = (int)right.size(); 

    while(lsize < rsize) 
    { 
     itl = left.end(); 
     left.insert(itl, 0); 
     lsize = (int)left.size(); 
    } 

    while(rsize < lsize) 
    { 
     itr = right.end(); 
     right.insert(itr, 0); 
     rsize = (int)right.size(); 
    } 

    itl = left.begin(); 
    itr = right.begin(); 
    ans = answer.begin(); 

    while(itl != left.end()) 
    { 
     lfint = *itl; 
     rtint = *itr; 
     sum = lfint + rtint; 

     sum = sum + cary; 
     cary = 0; 

     if(sum >= 10) 
     { 
      sum = sum - 10; 
      cary = 1; 
     } 

     answer.insert(ans, sum); 
     itl++; 
     itr++; 
    } 
    if(cary == 1) 
    { 
     answer.insert(ans, 1); 
    } 

    return answer; 
    } 

답변

10

을 반환 ...

list<int> add(const list<int> &lhs, const list<int> $rhs); 
2

$ 기호에 아무 의미 C++. 아마도 오타 일 것입니다.

list<int> add(const list<int> &lhs, const list<int> $rhs); 
list<int> sub(const list<int> &lhs, const list<int> $rhs); 

list<int> add(const list<int> &lhs, const list<int> &rhs); 
list<int> sub(const list<int> &lhs, const list<int> &rhs); 
+0

고마워요. 지금 꽤 바보 같아요. – Breander

+2

우리 모두 언젠가는 :) – GManNickG

4

문제는 코드의 시작 부분에 오타입니다해야한다 :

list<int> add(const list<int> &lhs, const list<int> $rhs); 
list<int> sub(const list<int> &lhs, const list<int> $rhs); 

가 그것을 해결하기 위해 &로 $를 교체합니다.

관련 문제