|
일반적으로 객체가 하나만 존재할 것이라는 추측에 대해서는 extern을 사용하는 것이 일반적입니다.
예를 들어 TApplication class의 object인 Application이나 TPrinter class의 object인 Printer 따위들 말이죠.
Mat이라는 class를 봤을 때는 반드시 member function이 필요없다고 생각이 들기 때문에
object 생성할 것 없이 그냥 사용하는 방법도 무난할 것 같습니다.
다음과 같이 말이죠.
<unit1.h>
class Mat
{
static int Add(int x, int y);
static int Div(int x, int y);
};
<unit1.cpp>
아래와 동일
<사용예제>
#include "unit1.h"
main()
{
int i = 5, j = 6;
printf("%d + %d = %d\n", i, j, Mat::Add(i, j)); <- 객체 생성없이 그냥 쓴다.
}
참고:
java에서도 일반적으로 Math function들은 static으로 되어 있습니다.
변수앞에 붙이는 static과 함수앞에 붙이는 static는 의미가 조금 다릅니다.
변수앞에 붙는 static은 전역변수같이 작동되면서 scope가 지역으로 한정되는 변수를 말하며,
function앞에 붙는 static은 meta class member임을 뜻하는 것입니다.
소영 님이 쓰신 글 :
: Unit1.h에서 class를 선언하고 이 class에 선언된 함수들을 다른 Unit에서 사용할려구 합니다.
: 예를들면,
: <unit1.h>
: class Mat
: {
: public:
: Mat(); //생성자
: ~Mat();
: int Add(int,int);
: int Div(int,int);
: .....
: };
:
: <unit1.cpp>
: int mat::Add(int a,int b){
: ....
: }
: int mat::Div(int a,int b){
: ...
: }
: 이 클래스 Mat에 선언된 함수들을 unit2에서 사용하려 합니다.
: class에 대해 검색을 해보니 extern을 사용하라고 하던데 잘 이해가 되지 않아
: 다시 질문드립니다. 자세히 좀 알려주세요.
:
:
|