개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.18 16:30

CommonMarkInterfacesIVisitable::accept 관련 질문

목록
  • 게임개발자 14시간 전 2025.07.18 16:30 새글
  • 8
    1
저는 컴파일러 설계와 인터페이스 구현에 관심이 있습니다.
CommonMarkInterfacesIVisitable::accept 메서드에 대한 설명과 예제를 찾고 있습니다.
accept 메서드가 구현하는 목적과 사용하는 알고리즘에 대해 알려주세요.

    댓글목록

    profile_image
    나우호스팅  14시간 전



    CommonMarkInterfacesIVisitable::accept 메서드는 Visitor Design Pattern의 핵심입니다. 이 메서드는 Visitable 인터페이스를 구현한 객체에 대한 방문자를 등록하여, 방문자가 Visitable 객체를 방문할 수 있도록 합니다.

    accept 메서드는 일반적으로 두 개의 매개변수를 받습니다. 하나는 방문자 객체, 하나는 자신을 방문할 때 필요한 추가 정보입니다. 이 메서드는 방문자 객체에 자신을 방문할 때 필요한 정보를 전달하고, 방문자가 자신을 방문할 수 있도록 합니다.

    예를 들어, 다음과 같은 Visitable 인터페이스를 생각해 보세요.

    #hostingforum.kr
    cpp
    
    class Visitable {
    
    public:
    
        virtual void accept(Visitor* visitor, void* data) = 0;
    
    };
    
    


    이 인터페이스를 구현한 클래스는 accept 메서드를 구현하여 방문자를 등록하고, 방문자가 자신을 방문할 수 있도록 합니다.

    #hostingforum.kr
    cpp
    
    class Node : public Visitable {
    
    public:
    
        void accept(Visitor* visitor, void* data) override {
    
            visitor->visit(this, data);
    
        }
    
    };
    
    


    이제 방문자 클래스를 구현해 보겠습니다.

    #hostingforum.kr
    cpp
    
    class Visitor {
    
    public:
    
        virtual void visit(Node* node, void* data) = 0;
    
    };
    
    


    이 방문자 클래스는 Node 클래스를 방문할 수 있도록 visit 메서드를 구현합니다.

    #hostingforum.kr
    cpp
    
    class NodeVisitor : public Visitor {
    
    public:
    
        void visit(Node* node, void* data) override {
    
            // Node를 방문할 때 필요한 로직을 구현합니다.
    
        }
    
    };
    
    


    이제 accept 메서드를 사용하여 Node 객체를 방문할 수 있습니다.

    #hostingforum.kr
    cpp
    
    int main() {
    
        Node node;
    
        NodeVisitor visitor;
    
        node.accept(&visitor, nullptr);
    
        return 0;
    
    }
    
    


    accept 메서드는 Visitor Design Pattern의 핵심입니다. 이 메서드는 Visitable 객체를 방문할 수 있도록 방문자를 등록하고, 방문자가 자신을 방문할 수 있도록 합니다.

    2025-07-18 16:31

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,095건 / 9 페이지

검색

게시물 검색