【问题标题】:Static member function throwing error静态成员函数抛出错误
【发布时间】:2016-07-04 09:12:32
【问题描述】:

如果我尝试执行下面的程序,那么它会给出错误。

#include <iostream>

using namespace std;

class book {
    static int i;
  public :
        static void set_data(void) // static member function
        {
            i++;
            cout<<i<<endl;
        }
};

int book :: i = 0;

int main()
{
    cout<<book :: set_data() << endl; // trying to display the static member function data here but it is giving error
}

如果我们要使用静态成员函数,那么我们需要返回静态参数吗?

【问题讨论】:

  • 寻求调试帮助的问题('为什么这段代码不起作用?')必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example
  • 您试图打印出set_data() 的返回值void,这没有任何意义。
  • 不是问题,但不要使用std::endl,除非您需要它的额外功能。 '\n' 结束一行。

标签: c++ static-methods


【解决方案1】:

set_data 具有void 返回类型,因此不能与cout 一起使用。为了解决这个问题,让set_data 实际上return 一些你可以用std::cout 输出的东西:

static int set_data(void)
{
    i++;
    return i;
}

(您不需要返回“静态参数”;此上下文中的static 表示您无法访问非static 类成员数据或函数。)

那么cout &lt;&lt; book::set_data() &lt;&lt; endl; 就可以了。或者,写

cout &lt;&lt; book::i &lt;&lt; endl;

i 设置为public 访问权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2018-12-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多