2016-11-30 3 views
-1

Я работаю над заданием, и хотя у меня нет никаких проблем с фактическим назначением, я хочу сделать свой код «правильным». Я пытаюсь определить статическую переменную в моем заголовочном файле. Я хочу, чтобы он был статическим, чтобы все экземпляры этого класса могли обращаться к одной и той же переменной. Я тоже не хочу его нарушать, я хочу, чтобы у этого класса был доступ к нему. Затем я пытаюсь определить его в фактическом файле (а не в заголовке), но я все время получаю сообщение об ошибке в том, что вы не можете его отличить. Я просто хочу узнать, как правильно сделать это, чтобы иметь более чистый код.Создание статического поля в файле заголовка | C++

+3

При задании вопроса о проблеме, вызванной вашим кодом, вы получите гораздо лучшие ответы, если вы предоставите [код, который люди могут использовать для воспроизведения проблемы] (http://stackoverflow.com/help/mcve). – CAB

+3

И код должен быть в текстовом формате в вопросе не изображения. – drescherjm

+0

В файле реализации (.cc) вам необходимо правильно объявить переменную, а не просто назначить ей. Например, 'List * AddrSpace :: availSlots = new List();' –

ответ

1

Определение вашей области остается внутри класса:

class AddrSpace 
{ 
    List *availSpots; 
}; 

Полное имя этой переменной будет AddrSpace::availSpots. Для C++ требуется явно определять статические переменные (включая статические поля классов). Я бы не сказал, что это вполне логично, потому что у компилятора уже есть все, чтобы генерировать все необходимые материалы. Тем не менее это так. Определение в файле C++ должно выглядеть так:

List *AddrSpace::availSpots = new List(); 

В следующий раз, пожалуйста, добавьте источник непосредственно в вопрос.

Смежные вопросы