버그 해결을 위한 모든 질문을 던져
0 votes
283 views
이거 빌드하면 에러떠요....  list로 플레이리스트 만드는 연습문제... 답지에도 next previous를 구현하는 법은 나와있지 않았습니다...

#include <iostream>
#include <list>

class music_list {
private:
    std::list<int> mlist;
    std::list<int>::iterator head;

public:
    music_list() {
        head = mlist.begin();
    }
    void insert(int music) {
        mlist.push_back(music);
    }
    void remove(int music) {
        mlist.pop_back();
    }
    void printall() {
        for (auto& music : mlist)
            std::cout << music << " ";
        std::cout << std::endl;
    }
    void now() {
        if (*head) {
            head = mlist.begin();
        }
        std::cout << *head << std::endl;
    }

    void next() {
        head = std::next(head, 1);
        std::cout << *head<< std::endl;
    }

    void previous() {
        head = std::prev(head, 1);
        std::cout << *head << std::endl;
    }
};

int main() {
    music_list p1;
    p1.insert(1);
    p1.insert(2);
    p1.printall();
    p1.insert(3);
    p1.now();
    p1.next();
    p1.now();
    p1.previous();
    p1.now();
    p1.printall();
    
}
asked (6 point) , 283 views

3 answers

0 votes
무슨 에러가 뜨는데요?
answered (371 point)
0 votes
music_list 생성자에서 mlist의 begin은 유효하지 않습니다.

head 유효성 비교도 mlist.end()와 같은지 비교해야 합니다.
answered (22 point)
0 votes
now에 보면 *head 일때 head를 초기화 하는데 없을때 하는게 맞지 않나 싶네요 next랑 previous에는 윗 답글처럼 예외처리가 필요해 보입니다
answered (274 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

610 질문
772 answers
731 댓글
118,370 users