首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获取错误"invalid use of non-static data member 'stu::n‘“

这个错误是由于使用了非静态数据成员 'stu::n' 的无效用法导致的。在C++中,非静态数据成员是属于类的实例的,而不是类本身的。因此,在没有创建类的实例的情况下,不能直接访问非静态数据成员。

要解决这个错误,有以下几种方法:

  1. 创建类的实例并使用实例来访问非静态数据成员:
代码语言:txt
复制
stu obj;
obj.n = 10;
  1. 将非静态数据成员声明为静态成员:
代码语言:txt
复制
class stu {
public:
    static int n;
};
int stu::n = 0;

这样就可以直接通过类名来访问静态数据成员:

代码语言:txt
复制
stu::n = 10;
  1. 将使用非静态数据成员的代码放在成员函数中:
代码语言:txt
复制
class stu {
public:
    int n;
    void setN(int value) {
        n = value;
    }
};
stu obj;
obj.setN(10);

总结: 错误"invalid use of non-static data member 'stu::n'"是由于在没有创建类的实例或没有使用成员函数的情况下,直接访问非静态数据成员导致的。解决方法包括创建类的实例并使用实例来访问非静态数据成员,将非静态数据成员声明为静态成员,或者将使用非静态数据成员的代码放在成员函数中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现)

    链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。   通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链表又可以分为单链表、双链表、循环链表等多种类型,下面分别给出这几类常见链表类型的示意图:

    02

    windows错误处理

    在调用windows API时函数会首先对我们传入的参数进行校验,然后执行,如果出现什么情况导致函数执行出错,有的函数可以通过返回值来判断函数是否出错,比如对于返回句柄的函数如果返回NULL 或者INVALID_HANDLE_VALUE,则函数出错,对于返回指针的函数来说如果返回NULL则函数出错,但是对于有的函数从返回值来看根本不知道是否成功,或者为什么失败,对此windows提供了一大堆的错误码,用于标识API函数是否出错以及出错原因。 在windows中为每个线程准备了一个存储区,专门用来存储当前API执行的错误码,想要获取这个错误码可以通过函数GetLastError。在这需要注意的是当前API执行返回的错误码会覆盖之前API返回的错误码,所以在调用API结束后需要立马调用GetLastError来获取该函数返回的错误码。但是windows中的错误码实在太多,有的时候错误码并不直观,windows为每个错误码都关联了一个错误信息的文本,想要通过错误码获取对应的文本信息,可以通过函数FormatMessage来获取。 下面是一个具体的例子:

    02
    领券