提问人:SNH 提问时间:5/30/2023 最后编辑:SNH 更新时间:5/30/2023 访问量:27
在 C++ 中调用已删除的构造函数
Invoking a deleted constructor in C++
问:
class one: public two {
public: explicit one (specifier const& use_case);
one() = delete;
void stat(Statistic val);
};
我需要使用 Libfuzzer Library 测试上面提到的公共接口“void stat(Statistic stat)”,所以我编写了如下代码:
结果:错误:调用已删除的构造函数“one”
问题:虽然构造函数被标记为显式删除,但如何调用或创建构造函数并成功执行下面的代码片段?
extern "C" LLVM..(Data, Size) {
Statistics val = Size; //Assigning the size;
one obj; //Creating an instance of one
obj.stat(val); //Call stat function and pass the value return 0;
}
提前致谢。
尝试使用此代码片段,并期望成功传递该值
答:
0赞
MSalters
5/30/2023
#1
“Reinvoke”是一个奇怪的词,在 C++ 中没有意义。
您可以通过更改为 来创建构造函数。one() = delete;
one() { /* function body */ }
这不能在类外完成,也不能在编译后完成。通过传递值来创建对象可能更容易。one
specifier
评论
0赞
SNH
5/30/2023
谢谢。如果您可以发布一个示例(代码片段)来测试 obj.stat(val);,那就太好了。我可以更好地理解它,因为我是这个 C++ 的新手
0赞
MSalters
5/30/2023
@SNH:不知道,你没有提供 .specifier
评论