The_Unknown_Member Ответов: 1

[C++] статические члены в классе ?


#include "stdafx.h"

class Animal
{
public:
	static int ID;
};

int main()
{
	Animal::ID = 5;
	printf("%d \n", Animal :: ID);
	return 0;
}

Что в этом плохого ???

Что я уже пробовал:

Задавая вопрос здесь в CodeProject.com

Thomas Daniels

Не могли бы вы описать, что вы подразумеваете под "что не так"? Вы получаете ошибку компилятора? Сбой во время выполнения? А какой компилятор вы используете?

The_Unknown_Member

Не компилировать. Вот сообщение об ошибке (это скриншот, просто откройте ссылку):
https://i.gyazo.com/bfd20571fb65d0ed231aa5c10720065d.png

Richard MacCutchan

Вы никогда не создаете экземпляр объекта Animal, поэтому ID не существует в вашей программе.

1 Ответов

Рейтинг:
7

Kornfeld Eliyahu Peter

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

class Animal
{
public:
	static int ID;
};

int Animal:ID;
 
int main()
{
	Animal::ID = 5;
	printf("%d \n", Animal::ID);
	return 0;
}

Гораздо лучше expatiation здесь: статические члены - cppreference.com[^]


CPallini

5.

Kornfeld Eliyahu Peter

Спасибо!