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

4

3 回答 3

2

你也需要给出类型。的类型mybasebase*

base* base::mybase = NULL;

这定义了 a base*,它是 的成员,base被调用mybase并将其初始化为NULL

于 2013-03-08T12:43:35.690 回答
2

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

base* base::mybase = NULL;
于 2013-03-08T12:43:47.300 回答
0

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

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

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

base* base::mybase = NULL;
于 2013-03-08T12:45:11.333 回答