如何解决C++中sonarqube静态代码分析错误 "明确定义缺少复制构造函数,移动构造函数..."

问题描述 投票:1回答:1

我得到以下sonarqube静态代码分析错误。

明确定义缺失的复制构造函数、移动构造函数、复制赋值操作符和移动赋值操作符,这样它们就不会被隐式提供。

我在头文件中的Destructor声明处得到了上述信息。

~CCPSDataManager();

而且在我的.cpp文件中,有这个Destructor的定义 ~CCPSDataManager().

在这里,我是否需要遵循5的规则,提供Destructor、copy构造函数和copy-assignment操作符、move构造函数和move-assignment操作符?还是有其他方法?

另外,如果我定义了复制构造函数、复制-赋值操作符、移动构造函数和移动-赋值操作符,我们就会写很多行代码而不使用这些。这是一个正确的方法吗?

请给我一些建议,并给我一些关于如何进行的见解?

c++ sonarqube
1个回答
0
投票

这里我需要遵循5的规则,提供Destructor、copy构造函数和copy-assignment操作符、move构造函数和move-assignment操作符吗?

这要看你在destructor中做什么。

在大多数情况下,如果你需要一个destructor,那么你需要遵循第5条规则,因为在大多数情况下,隐式生成的会做错事。并非总是如此,但在大多数情况下。你使用的分析器建议遵循第5条规则,因为假设它可能是必要的。

还是有其他方法?

如果不需要自定义destructor,那就遵循0的规则。不要定义一个自定义的destructor.

还有如果我定义了复制构造函数、复制-赋值操作符、移动构造函数和移动-赋值操作符,我们在写很多行代码的时候就不用这些了。

如果你不用它们,那么最简单的解决办法就是定义它们删除。

© www.soinside.com 2019 - 2024. All rights reserved.