여러 네임 스페이스 내에서 동일한 클래스 이름을 사용하면 문제가 발생합니까? 나 또한 수학 라이브러리에 의존성을 제거하려고합니다. 디자인을 따르는 것에 대해 어떻게 생각하십니까?클래스 이름 지정 및 네임 스페이스
첫 번째 파일
#define MATH_RECTANGLE_EXISTS
namespace math {
class Rectangle : Object2D {
public:
float perimeter();
float area();
float x,y,w,h;
};
}
다른 파일
#define GRAPHIC_RECTANGLE_EXISTS
#ifndef MATH_RECTANGLE_EXISTS
//is this a good idea to remove dependency?
namespace math {
class Rectangle {
public:
float x,y,w,h;
}
}
#endif
namespace graphics {
class Rectangle : math::Rectangle {
public:
void Draw(Canvas &canvas);
void Translate(float x, float y);
};
}
편집
무엇 종속성을 제거하는이 방법에 대한?
** 1 파일 **
namespace common {
class Rectangle {
float x,y,w,h;
};
}
수학 LIB 파일
#define MATH_RECTANGLE_EXISTS
namespace math {
class Rectangle : public common::Rectangle, public Object2D {
public:
float perimeter();
float area();
};
}
그래픽 파일 미리
#define GRAPHIC_RECTANGLE_EXISTS
namespace graphics {
#ifndef MATH_RECTANGLE_EXISTS
class Rectangle : public math::Rectangle {
#else
class Rectangle : public common::Rectangle {
#endif
public:
void Draw(Canvas &canvas);
void Translate(float x, float y);
};
}
감사합니다.
예, 그렇습니다.하지만 두 라이브러리 간의 종속성을 원하지 않습니다. 존재하는 경우 해당 기능을 사용하고 싶습니다. –
질문을 업데이트했습니다. 다시 확인하십시오. –
그런 다음 일종의 인터페이스/팩토리를 사용해야합니다. 수학 라이브러리를 사용할 수있는 경우 구현을 가져올 수 있습니다. 그렇지 않으면 대체가 대신 사용됩니다. – sdg