Globalne zmienne static const w osobnej klasie

Globalne zmienne static const w osobnej klasie
Kamil9132
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 4 lata
  • Postów:173
0

Witam.
Co należy zmienić w poniższym kodzie, żeby kompilator traktował zmienną Menu_Size jako const?

Main.cpp

Kopiuj
#include <array>
#include "Globals.h"
std::array<int, Globals::Menu_Size> Array_T;

Globals.h

Kopiuj
#pragma once

class Globals
{
public:

	static const size_t Menu_Size;

	Globals(void);
	~Globals(void);

};

Globals.cpp

Kopiuj
#include "Globals.h"

const size_t Globals::Menu_Size = 4;

Globals::Globals(void)
{
}
Globals::~Globals(void)
{
}
edytowany 1x, ostatnio: Kamil9132
Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:ponad rok
1

Przecież ta zmienna jest const. To co chcesz zrobić, to żeby mogła być użyta w kontekście, gdzie wymagane jest constant expression.

W klasie ma być tak:

Kopiuj
static const size_t Menu_Size = 4;

A w pliku źródłowym tak:

Kopiuj
const size_t Globals::Menu_Size;

Do kompilacji i linkowania ta definicja w pliku źródłowym może być niepotrzebna, jeżeli ten const będzie użyty tylko jako constant expression, ale standard wymaga żeby mimo wszystko była.


"(...) otherwise, the behavior is undefined".
edytowany 1x, ostatnio: Endrju

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.