함수 포인터 질문 입니다.
안녕하세요. 다름이 아니라
링크드 리스트로 함수들을 관리하기 위하여
테스트 소스를 만들었는데
func = *it 에서 에러가 발생하네요.
문법적인 오류 인것 같은데요. 정확하게 어떻게 잘못 되었는지 알수가 없네요.
혹시 밑에 소스처럼 함수 포인터를 사용하여 함수 모듈을 관리 호출 하시는분들은 답변 주시면 정말 감사하겠습니다.
테스트 소스는 아래와 같습니다.
--------------------------------------------------------
#include
#include
using namespace std;
list stlMod;
void com( char *szBuf, int nLength )
{
cout << "comress test" << endl;
}
void encrypt( char *szBuf, int nLength )
{
cout << "encrypt test" << endl;
}
int main(int argc, char *argv[] )
{
void (*func)(char *szBuf, int nLength);
stlMod.push_back("com");
stlMod.push_back("encrypt");
//func = com;
char szBuf[1024];
int nLength= 3;
list::iterator it;
it = stlMod.begin();
for( ; it != stlMod.end(); it++)
{
func = *it; // 이부분이 문제 입니다.
func(szBuf, nLength );
}
return 0;
}
-----------------------------------------
list에 삽입한
list에 삽입한 데이터는 const char * 형태인데
func의 데이터는 함수포인터 잖습니까.
즉 서로 데이타타입이 다르니까 에러가 발생하는거죠.
그리고 list선언시에
list myList;
같은 식으로 list에 넣을 데이터를 명시해주셔야합니다.
지금은 함수포인터를 넣을 것이니 그에 대한 데이터 타입을 명시해주시면 되죠.
-----------------
한글을 사랑합니다.
-----------------
한글을 사랑합니다.
변환을 어떻게 해야 될까요?
lovian님 답변 감사합니다.
예. 데이터 타입이 다른것은 알겠으나 포인터 명을 어떤 타입으로 list에 넣어야 될지 몰라서
char *즉 타입명을 문자열로 넣은 것입니다.
물론 여기서 에러가 발생했구요.
list stlMod;
stlMod.push_back("com");
stlMod.push_back("encrypt");
선언과 요소들을 넣을때 함수명을 어떤 형으로 선언해야 될지 어떤 타입으로 요소들을 리스트에 넣어야 될지를
잘 모르겠습니다.
^____^; 방가여
^____^; 방가여
댓글 달기