기존소스를 수정중인데 이런건 어떻게..

nekoko의 이미지

live555라는 RTSP 라이브러리를 수정중인데요.
보통 한가지 영상에 대해서 처리되고 있는 코드인데
여러 채널 영상을 받으려고 합니다.

다른 곳에서 이에 대해 수정한 코드를 받아보니
기존 함수명이나 변수 뒤에 1,2,3,4 ... 식으로
숫자를 붙이고 파일도 openRTSP1.cpp openRTSP2.cpp...
이런 식으로 해서 채널을 4개까지 늘려놨더라구요?

왜이렇게 했나 궁금했는데 손대려다보니,
함수포인터를 할당하는 부분도 있고 해서 간단하게 하려고
이렇게 수정했던 것 같네요..

예를 들면
void startPlaying(PlayingFunc* afterFunc) {
fAfterFunc = afterFunc;
}
과 같은 함수가 있고
startPlaying(subsessionAfterPlaying1);
라는 식으로 호출을 합니다. 여기서 인자로 넣어주는 함수를 보시면
뒤에 숫자가 붙어있잖아요? 저는 이걸 없애고 숫자값(영상번호를 의미)을 따로 인자로
넣어주는 식으로 하고 싶은데..
startPlaying() 함수 안에서 함수포인터를 할당할 때, 이 인자값은 어떻게 같이
묶어줄 수 있는지.. 궁금하네요.

질문이 지저분한데 이해하셨는지 모르겠습니다.
이해하신 분은 답글을, 아니면 뒤로가기 버튼을 눌러주세요..

semmal의 이미지

그럴 방법은 없습니다.

------------------------------
How many legs does a dog have?

nekoko의 이미지

!?

"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011

익명 사용자의 이미지

전문용어로 currying이라고 합니다. (담부터는 그냥 c/c++에서 currying을 어떻게 하나요 라고 질문하시면 됩니다)
function currying (c++) 등으로 한번 검색해 보시면 도움이 될지도 모르겠네요.

nekoko의 이미지

찾아보니 무슨 논문같은게..
대충 봐선 잘 모르겠는데 좀 복잡해보여서
제 코드에 적용할 수 있을런지 모르겠네요..
아무튼 답변 고맙습니다.

"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011

biiiiid의 이미지


미리 함수포인터의 어레이를 만들어서, 매핑을 해놓고,
나중에는 그 인덱스로 함수포인터를 가져오는게
원하시는게 아닌가요?

PlayingFunc* funcArray[4];
funcArray[0] = subsessionAfterPlaying1;
funcArray[1] = subsessionAfterPlaying2;
 
...
 
startPlaying(funcArray[i]);
익명 사용자의 이미지

startPlaying()에서 숫자값(영상번호를 의미)만을 인자로 받는 것은 어떤가요?
startPlaying(1);

PlayingFunc* funcArray[4];
funcArray[0] = subsessionAfterPlaying1;
funcArray[1] = subsessionAfterPlaying2;

startPlaying(int index)
{
funcArray

    ();
    }

    댓글 달기

    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
    이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.