【发布时间】:2020-07-01 01:46:03
【问题描述】:
有一个函数,我们只希望另一个函数作为其唯一调用者:
void bar(){
}
void foo(){
}
void baz(){
}
所有三个函数都位于同一个类中。我们希望 foo() 能够调用 bar(),但不允许 baz() 调用 bar()。
到目前为止,这个答案似乎表明解决方案是在函数中使用 lambda 函数,或者在函数中创建结构/匿名结构。
Can we have functions inside functions in C++?
有没有一种方法可以实现我们的目标,而无需在 foo() 中移动 bar() 即 - 无需在 foo 中创建 lambda 或 struct ?
这只是一个技术实验来探索它是否可能——它不是关于我们“应该”做什么,而是简单地看看它是否可能。
【问题讨论】:
-
也许这可以帮助你:stackoverflow.com/a/4324780/13687491
-
@nanu_nana 谢谢!但这与我在问题中包含的链接完全相同! :)
-
不,这是不可能的。我首先会强烈质疑这样做的理由。
-
@cdhowie 我用粗体突出显示——我们只是想看看在 c++ 中什么是可能的。不要认为它值得-1。 :)
-
你为什么认为我投了反对票?那么,这个问题的答案是否定的——除非你把有问题的函数移到允许调用它的函数中。没有比
private更严格的访问修饰符。