在对象上调用静态成员函数 - 有没有办法使其成为编译器错误?

时间:2016-07-18 21:08:43

标签: c++ qt templates compilation static-methods

当其他方法充当对象的修饰符时,IDE会自动完成静态方法,这很烦人。是否有(智能)方法将如下所示的代码编译成编译错误?

  // Translate along X and Y axes, rotate pi/4 about axis X;
  QQuaternion q;
  q.fromAxisAndAngle({1,0,0}, 45.0); // whoops, fromAxisAndAngle is static!
  // Later: test fails, "wait why is my quaternion still identity!?" 

也许某种检查静态方法的返回值被忽略并且它是在对象ClassFoo().StaticMethod()而不是ClassFoo::StaticMethod()上调用的?

1 个答案:

答案 0 :(得分:1)

您无法区分代码中的“在对象上调用”的情况,因为它只是一个语法设备。无论如何,通话结果都是一样的。但是给定的编译器可能支持对此进行警告诊断,如果是这样,可能会将该警告诊断转换为编译错误(例如,使用g ++,-pedantic-errors,但我不知道g ++是否有对该电话的警告。)