为什么我们不能声明一个函数参数静态?

时间:2015-09-13 03:46:11

标签: c++ static c++14

我一直很好奇为什么c ++不允许声明一个静态函数参数,如下所示:

int test(static int a )
{
     return a;
}

int main()
{

    test(5);
    return 0;
}

输出控制台显示:

error: storage class specifiers invalid in parameter declarations
error: storage class specified for parameter 'a'

更新#1: 我可以达到以下要求:

int test(int a )
{
     static int count = 0;// <-- I want to eliminate this line due to some project constraints.
     count += a; 
     return count;
}

如果你建议,我不能通过引用传递参数,我已经尝试过考虑这个选项了。 如果还有其他方法可以实现上述行为,那么欢迎您。 感谢。

1 个答案:

答案 0 :(得分:1)

要声明一个静态函数,你可以这样做

static int test(int a )
{
     return a;
}

您正在尝试将“static int a”传递给函数,但没有理由这样做。你会改为声明

static int a; 

在类中的某个地方,然后简单地将a传递给上面创建的静态方法

test(a);