게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++ 에서 이런 클래스 구조로는 작성할 수 없나요?
게시물ID : programmer_20022짧은주소 복사하기
작성자 : 와일두캣
추천 : 0
조회수 : 529회
댓글수 : 11개
등록시간 : 2017/03/20 23:33:29
옵션
  • 본인삭제금지
어떤 C++로 간단한 라이브러리를 만들고 있는데요..!

라이브러리에 정의된 클래스 A,B가 있습니당.

B는 생성자에서, 

new A(*this) 를 호출해 멤버 변수로 저장하고 있구, A의 생성자에서 짐작하실 수 있듯이, A역시 B의 reference type을 들고 있는데요..!
뿐만 아니라, 멤버변수를 통해 B는 A의 멤버함수를, A는 B의 멤버함수를 호출까지 하고 있습니당.

이때.. 이런 구조로 클래스를 작성하려면, A.h라는 헤더 파일에 A의 선언과 정의를 전부 작성하고 B.h 라는 헤더 파일에 B의 선언과 정의를 전부 작성해선 안되잖아요??

해결 하는 방법은 B 와 A의 선언과 정의를 각각 h파일과 cpp파일로 나누어, 링킹하는 방법이 있을건데요..

제가 만들고픈 라이브러리의 형태는, 따로 static library가 필요한 library가 아닌, header 만 있어도 사용가능하게 하고 싶어서요 ㅠㅠ

불가능 할까요??

요약 : header-only library에서, 서로가 서로의 정의까지 필요한 class 들을 설계할 수 있나요??

이해를 들기 위해 클래스 A랑 B를 잠시 써보면..

A.hpp

#ifndef _A_HPP_

#define _A_HPP_


#include "B.hpp"


class A {

public:

  A(B& b):b_(b) { }

  void foo()

  {

    b_.foo();

  }

  B& b_;

};


#endif

========================


B.hpp


#ifndef _B_HPP_

#define _B_HPP_


#include "A.hpp"


class B {

public:

  B() { a = new A(*this); }

  void foo()

  {


  }

  A *a;

};


#endif

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호