c++ - 如何使一个函数只能从另一个函数调用?

标签 c++ function c++11 lambda lexical-closures

//function declerations
void func_A();
void func_B();
void func_SubA();

//main
int main(){ ... }

//function definitions
void func_A(){ ... }
void func_B(){ ... }
void func_SubA(){ ... }

确保只能在 func_A() 内部调用 func_SubA() 的最佳方法是什么?
如果 func_B() 试图调用 func_SubA(),我希望收到编译器错误。

最佳答案

您可以将要限制访问的函数声明为类的私有(private)成员,然后使用友元来授予访问权限。

class Balloon 
{
private: // private is the default. we just want to be explicit
    friend void Ken();
    friend void Barbie();

    static void Pop();
};

void Ken() {
    Balloon::Pop(); // We are allowed to pop it!
}

void Barbie() {
    Balloon::Pop(); // We are allowed to pop it too!
}

void Jack() {
    Balloon::Pop(); //  Access Denied! we must be in a time out!
}

关于c++ - 如何使一个函数只能从另一个函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753649/

相关文章:

c++ - ISO/IEC 10646 中的 "character short name"是什么?

c++ - 如何从 VirtualBox 日志文件中理解和调试?

c++ - 选择创建普通函数或类私有(private)成员函数

javascript - 如何改变js中的函数参数并且所有参数都是对象?

python - 为什么我无法打印返回值?

c++ - 这是一个有效的 for 循环吗?

c++ - 算术运算是否会受到编译器优化的影响?

c++ - 在 C++ 的函数调用中完成强制转换是否真的有效?

c++ - 类构造函数优先级与值包装器的可变模板构造函数

c++ - 您如何将所有链接依赖项打包到一个 Linux 静态库中?