함수 포인터 질문 입니다.

metalwolf의 이미지

안녕하세요. 다름이 아니라

링크드 리스트로 함수들을 관리하기 위하여

테스트 소스를 만들었는데

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;
}

-----------------------------------------

lovian의 이미지

list에 삽입한 데이터는 const char * 형태인데
func의 데이터는 함수포인터 잖습니까.
즉 서로 데이타타입이 다르니까 에러가 발생하는거죠.

그리고 list선언시에
list myList;
같은 식으로 list에 넣을 데이터를 명시해주셔야합니다.
지금은 함수포인터를 넣을 것이니 그에 대한 데이터 타입을 명시해주시면 되죠.
-----------------
한글을 사랑합니다.

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

metalwolf의 이미지

lovian님 답변 감사합니다.

예. 데이터 타입이 다른것은 알겠으나 포인터 명을 어떤 타입으로 list에 넣어야 될지 몰라서

char *즉 타입명을 문자열로 넣은 것입니다.

물론 여기서 에러가 발생했구요.

list stlMod;

stlMod.push_back("com");
stlMod.push_back("encrypt");

선언과 요소들을 넣을때 함수명을 어떤 형으로 선언해야 될지 어떤 타입으로 요소들을 리스트에 넣어야 될지를

잘 모르겠습니다.

^____^; 방가여

^____^; 방가여

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.