这个警告“指向算术中使用的函数的指针”是什么意思?
我有这个代码:
#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,我很困惑为什么我收到此错误,我也困惑为什么它指的是v1,v2和v3作为功能。
回答
本声明:
static std::vector<int> race(int v1, int v2, int v3);
声明race为一个static成员函数,它接受 3 个int参数并返回一个std::vector<int>.
当您编写race[0]函数时,函数race会衰减为函数指针,然后您将对其进行索引。编译器警告你这永远没有意义,这是真的。
请注意,您只会收到警告而不是错误,因为您大概是使用 GCC 编译代码,GCC 接受此代码作为扩展。就语言而言,这是不允许的,并且是错误的。
此外,编译器是不是指v1,v2和v3作为功能,它只是指race的功能,这也是事实。