静态成员变量赋值

时间:2013-03-08 12:41:37

标签: c++

#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”编译错误!

3 个答案:

答案 0 :(得分:2)

您也需要提供类型。 mybase的类型为base*

base* base::mybase = NULL;

这定义了base* base的成员mybase并被称为NULL,并将其初始化为{{1}}。

答案 1 :(得分:2)

您还应该在行中提供变量的类型:

base* base::mybase = NULL;

答案 2 :(得分:0)

  

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

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

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

base* base::mybase = NULL;