[STL] std::map의 배열 형태의 변수를 return하는 문제...

dorado2의 이미지

typedef struct _rEntry
{
	int dist;
	int mom;
} rEntry;

typedef std::map<int, rEntry> rTable; 
typedef std::pair <int, rEntry> r_Pair;

일단 자료구조는 위와 같이 선언되어 있습니다.

rTable r_table[256];

rEntry A ;
A.dist = 5;
A.mom = 6;

r_table[0].insert(r_Pair(1,A));

A.dist = 7;
A.mom = 8;
r_table[3].insert(r_Pair(4,A));

256개 노드에 관한 테이블이 필요해서 위와 같이 변수 선언을 하고 사용합니다. 위처럼 하고 값을 쓰고 읽어 보니 동작은 잘 합니다.

문제는 저 r_table을 다른 클래스에서 사용하기 위해서 get 함수를 작성했는데 에러가 나네요.


rTable[] get_routing_table() {return r_table; };   // 에러~~

rTable& get_routing_table() {return r_table; };  // 에러~~

위 두 가지 방식은 컴파일시에 에러가 나네요.
어떤 방식으로 return 해야 할까요?

답변에 미리 감사드립니다.

lovian의 이미지

두번째거는 r_table 은 배열인데 rTable 은 배열이 아니라 타입이 안맞는 문제네요.

rTable* get_routing_table() {return r_table; };

이런 포인터로 해결하면 안되는가요?

-----------------
한글을 사랑합니다.

dorado2의 이미지

왜 저거만 안 해봤을까요. :evil:
머리가 굳었습니다. 이런..

덕분에 문제 해결했습니다~~ :D