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