2013-03-08 5 views
-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»!назначение переменной статического элемента

+0

Всякий раз, когда вы размещаете вопросы, связанные с ошибками, пожалуйста, напишите полное сообщение об ошибке вы получаете. –

ответ

2

Вам также нужно указать тип. Тип mybase является base*:

base* base::mybase = NULL; 

Это определяет base*, который является членом base и называется mybase и инициализирует его NULL.

+0

Я знаю ответ, но я не знаю почему? – paul08colin

+0

@ user1965184 Потому что это переменное определение - оно должно начинаться с типа. Точно так же 'int x = 5;' делает. –

+0

ОК, я вижу! Спасибо! – paul08colin

2

Вы должны также дать тип переменной в строке:

base* base::mybase = NULL; 
0

почему линия кода base::mybase = NULL ошибки компилятора!

Потому что это неверное объявление. Это было бы допустимым выражением присваивания (в контексте, имеющем доступ к закрытым членам базы классов), но вы не можете иметь выражения в области пространства имен.

Чтобы обеспечить определение статического члена, используйте

base* base::mybase = NULL;