我有以下例子
#include <cstdint>
class FooC
{
public:
FooC(uint16_t iPort, uint16_t iPin)
: PORT(iPort)
, PIN(iPin)
{
};
~FooC() = default;
FooC() = delete;
FooC(const FooC&) = delete;
FooC(FooC&&) = delete;
private:
const uint16_t PORT;
const uint16_t PIN;
};
int main()
{
FooC array[2] = {
FooC(1,2),
FooC(3,4)
};
}
Run Code Online (Sandbox Code Playgroud)
我不想调用默认,移动和复制构造函数.由于我删除了功能.不幸的是,这会导致以下错误(使用C++ 11编译)
:在函数'int main()'中:
:28:5:错误:使用已删除的函数'FooC :: FooC(FooC &&)'
Run Code Online (Sandbox Code Playgroud)}; ^:16:4:注意:在这里宣布
Run Code Online (Sandbox Code Playgroud)FooC(FooC&&) = delete; ^~~~:28:5:错误:使用已删除的函数'FooC :: FooC(FooC &&)'
Run Code Online (Sandbox Code Playgroud)}; ^:16:4:注意:在这里宣布
Run Code Online (Sandbox Code Playgroud)FooC(FooC&&) = delete; ^~~~编译返回:1
是否可以在此示例中强制使用参数调用构造函数并仍然删除默认,移动和复制构造函数?