静态成员变量赋值

the static member variable assignment

本文关键字:赋值 变量 静态成员      更新时间:2023-10-16
#include <iostream>
using namespace std;
class base
{
    static base* mybase;
};
base::mybase = NULL;
char* str = "hello world";
int main()
{
    std::cout<<"hello world"<<std::endl;
    return 0;
}

为什么代码行"base::mybase = NULL"编译器出错!

您还应该在行中给出变量的类型:

base* base::mybase = NULL;

你也需要给出类型。mybase的类型base*

base* base::mybase = NULL;

这将定义一个base*,该是base的成员,称为mybase并将其初始化为NULL

为什么代码行base::mybase = NULL编译器错误!

因为它不是有效的声明。它将是一个有效的赋值表达式(在可以访问类基的私有成员的上下文中(,但不能在命名空间范围内使用表达式语句。

若要提供静态成员的定义,请使用

base* base::mybase = NULL;