gpt4 book ai didi

尽管明确声明为私有(private),但 c++ 函数仍可公开调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:07:02 26 4
gpt4 key购买 nike

我目前正在调查为什么我能够从不应从中访问私有(private)函数的上下文中调用私有(private)函数。我已经将它缩小到一个非常简单的示例,但我仍然无法确定问题所在。

LIVE example

这是我缩小的版本:

template<typename From, typename To>
concept bool ConvertibleNoNarrow = requires(From f, To t) {
t = { f };
};

template<typename T>
class Wrapper {
T t;
public:
Wrapper(ConvertibleNoNarrow<T> u) : t(u) { }

private:
// should be PRIVATE
void operator()() { }
};

int main() {
Wrapper<long> w(1);

// should not be able to call this!
w();
}

最佳答案

是的。它应该是私有(private)的,你不应该能够以这种方式调用该运算符(operator)。我尝试过删除“概念”,但 g++/clang 确实对此有所提示。

关于尽管明确声明为私有(private),但 c++ 函数仍可公开调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50077676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com