我有这个代码:
#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
称为函数。