C++ 가변 파라미터 전달 클래스

사실 C++에는 적합하지 않다..
단순 메모리 복사이기 때문에..
클래스일 경우에는 포인터로 넘겨야 안전하다.

class Params
{
public:

template <typename Ty>
Params& operator , (const Ty& p)
{
elem* e = new elem;
e->data = malloc(sizeof(Ty));
memcpy(e->data, &p, sizeof(Ty));
elems.push_back(e);
return *this;
}

template <typename Ty>
Ty Get(size_t i)
{
if (elems.size() data);
}

size_t Count()
{
return elems.size();
}

~Params()
{
while (elems.size())
{
elem* e = elems.back();
free(e->data);
delete e;
elems.pop_back();
}
}

private:
struct elem
{
void* data;
};
vector<elem*> elems;

};


void foo(int asdf, Params& params);
이런 함수가 있다면
foo(123, (Params(), 'a', 123, "asdfasdf"));
이런 식으로 호출하고
foo함수 내부에서는
params.Get<char>(0);
params.Get<int>(1);
이런식으로 사용하면 된다..
이 가변인자는 어떤 인자가 들어갈지 모르니
함수의 다른 인자로 어떤 데이터가 들어오는지 체크할수 있도록
미리 생각해두는게 좋다..

by kiho | 2005/08/08 02:15 | 프로그래밍 팁 | 트랙백 | 덧글(0)

트랙백 주소 : http://kiho.egloos.com/tb/450561
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶