【发布时间】:2016-09-13 09:18:31
【问题描述】:
我正在对一个 VS C++ 项目进行一些维护,我经常看到将静态成员函数用作类方法。
例如:
class A {
public:
static int func(int i);
};
...
A* a = new A();
a->func(3);
...
有没有办法从编译器生成警告,以便我可以像这样清理所有源代码:
...
A::func(3);
...
因为我可以收到未使用和声明的变量的警告,所以我认为这些类型的不良成员使用应该有类似的东西,但没有运气:即使我在编译器选项中设置 /Wall 我也没有收到警告来自编译器。
【问题讨论】:
-
为什么会有警告?这是非常好的C++。 “清理”是错误的
-
一种快速的方法是搜索所有静态函数,将它们重命名为
static int STATIC_func(int i);之类的名称,然后重新构建,您将在a->func(3);等行中得到编译器错误,所以然后将它们固定为a->STATIC_func(3);,将它们固定为A::STATIC_func(3);。最后,搜索STATIC_func并再次将其更改为func。也许您的 IDE 支持重构,因此您可以自动进行最后一次重命名。但是请确保您有充分的理由进行“修复”。代码完全正确。 -
@Hayt 很好的发现,但是编译器错误。不过仍然相关。
-
@RichardHodges:因为如果我声明
A a;并且我不使用它,我会收到 C4101(“未引用的局部变量”)之类的警告,那么我想我应该得到相同的如果我写:A a; a.func(1);而不是A::func(1);在这两种情况下都会“浪费”变量。
标签: c++ visual-studio-2013 static-methods