通常呼び出すことができない関数の参照を渡すのが安全である(そしてなぜ)のだろうかと思います。私が持っているファイルmyFunct.cppで言い換えるプライベート関数の参照を外部関数に渡す理由は何ですか?
このような何か:externalStuffインサイド
#include "externalStuff.h"
#include "myFunct.h" // myFunct_publicFunction proto
static void myFunct_foo(void);
static void myFunct_foo(void)
{
[...]
}
void myFunct_publicFunction()
{
externalStuffObj.init(myFunct_foo);
}
参照は、このように関連付けられている:
externalStuffClass::init(void (*function)(void))
{
externalStuffReference = function;
}
このコードスニペットは、実際にコンパイルし、 externalStuffObjが何らかの理由でmyFunct_fooの格納された参照を呼び出すと、正しく実行されます。 私は、ソースファイル内で静的関数を宣言することは、C言語ではprivate関数を持つことと同等であると考えており、そのようなソースファイルに含まれていない関数では使用できません。
私の質問は、これが安全であるか、それが幸運な要因のために働いていて、ポインタを混乱させる可能性があるということです。