这个警告“指向算术中使用的函数的指针”是什么意思?

我有这个代码:

#include <vector> 
class myClass
{
public:
  static std::vector<int> race(int v1, int v2, int v3);
  static int the_v1 = race[0];
  static int the_v2 = race[1];
  static int the_v3 = race[2]; 
}

int main() {}

我收到一条错误消息:

警告:指向算术中使用的函数的指针

在线路6,图7和8,我很困惑为什么我收到此错误,我也困惑为什么它指的是v1v2v3作为功能。

回答

本声明:

static std::vector<int> race(int v1, int v2, int v3);

声明race为一个static成员函数,它接受 3 个int参数并返回一个std::vector<int>.

当您编写race[0]函数时,函数race会衰减为函数指针,然后您将对其进行索引。编译器警告你这永远没有意义,这是真的。

请注意,您只会收到警告而不是错误,因为您大概是使用 GCC 编译代码,GCC 接受此代码作为扩展。就语言而言,这是不允许的,并且是错误的。

此外,编译器是不是指v1v2v3作为功能,它只是指race的功能,这也是事实。


以上是这个警告“指向算术中使用的函数的指针”是什么意思?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>