[완료] operator []의 오버로딩을 이용해서 classname["key1"]["key2"]를 구현하는 방법.

Jun92의 이미지

class arrayclass 
{
private:
 int array[10][10];
public: 
 
}

위와 같이 2차원 배열을 가지고 있는 변수 값을
클래스의 이름을 곧바로 이용해서

arrayclass ac;
int nRet = ac[2][3];  // arrayclass::array[2][3]이 리턴.

이런식으로 오버로딩이 가능하게 하고 싶은데요.

operator[] overloading을 어찌해야할지 감이 안 잡히네요.

의견 부탁드립니다.

neogeo의 이미지

http://www.devarticles.com/c/a/Cplusplus/Operator-Overloading-in-C-plus/2/

이 글이 도움이 되길 빌겠습니다. 약간 꽁수 같은 방법이 되겠습니다. ( 즉 2차원 array 식으로만 접근이 되게 보이겠지요 )

조금 불편하시면 만드실 클래스를 쓸때만 macro 를 이용하는 것도 방법이겠습니다. ( [2][3] = [maxcolumn * 2 + 3] 의 성질을 이용하여 )

Neogeo - Future is Now.

Neogeo - Future is Now.

blueiur의 이미지

어떻게 설명을 해 드려야 하나 ..

간단하게 2차원 배열 오버로딩이 아니라
연잔자[]를 오버로딩한 클래스를 가지는 클래스에서 연산자[]를 다시 오버로딩 해주시면 됩니다.

즉, 외쪽 클래스에서 오버로딩된 연산자[] 가 리턴하는 값이 안쪽 클래스를 리턴하게 되면 거기에
오버로딩 되어 있는 연산자[]가 불리게 됩니다.

Jun92의 이미지

아.. 이해했습니다. 감사합니다. ^^

=============================
야후!