컴파일 실패 관련 질문

  • User Avatar
    pizzamon

    #안녕하세요

    [[problem:QUADTREE]]

    문제 풀다가 컴파일 실패를 만났는데요.

    제가 쓰는 데톱에 깔려있는 MS VS 2008 에서는 컴파일 됐는데

    gcc 에서는 안되더라구요. 제가 gcc는 안써봐서 그러는데 어떻게 고쳐야 되는 지 도움 좀 주시면 감사하겠습니다. 에라나는 부분은 함수 인자에서 string 의 iterator를 참조형으로 받을 때 입니다.

    에러 내용은

    submission.cpp: In function ‘int main()’:
    submission.cpp:22:24: error: invalid initialization of non-const reference of type ‘std::basic_string::iterator& {aka gnu_cxx::normal_iterator >&}’ from an rvalue of type ‘std::basic_string::iterator {aka gnu_cxx::normal_iterator >}’
    submission.cpp:7:8: error: in passing argument 1 of ‘std::string Reverse(std::basic_string::iterator&)’

    이고 제 소스코드는


    ~~~ c++
    #include
    #include
    #include

    using namespace std;

    string Reverse(string::iterator& it);

    int main() {

    int c;
    cin >> c;
    cin.ignore();
    
    vector<string> output;
    
    for(int i=0; i<c; ++i) {
        string s;
        getline(cin,s);
    
        string r;
        r = Reverse(s.begin());
        output.push_back(r);
    }
    
    for(int i=0; i<c; ++i) {
        cout << output[i] << endl;
    }
    

    }

    string Reverse(string::iterator& it) {

    char head = *it;
    ++it;
    
    if(head == 'w' || head == 'b') {
        return string(1,head);
    }
    else {
    
        string q1 = Reverse(it);
        string q2 = Reverse(it);
        string q3 = Reverse(it);
        string q4 = Reverse(it);
    
        return string("x") + q3 + q4 + q1 + q2;     
    }
    

    }
    ~~~

    입니다


    12년 전
2개의 댓글이 있습니다.
  • User Avatar
    Being

    s.begin()은 r-value인데 레퍼런스를 얻으시려던 부분이 잘못된 것 같네요.


    12년 전 link
  • User Avatar
    pizzamon

    감사합니다. 덕분에 고쳤네요.


    12년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.