Szukałem się sposoby zainicjowania mapę statycznych w C++ i znaleźć ten kod:dlaczego "statyczne" nie mogą być używane podczas definiowania (w przeciwieństwie do deklarowania) statycznego elementu danych "?
struct A{
static map<int,int> create_map()
{
map<int,int> m;
m[1] = 2;
m[3] = 4;
m[5] = 6;
return m;
}
static const map<int,int> myMap;
};
const map<int,int> A:: myMap = A::create_map();
Jednak jeśli zmienię ostatnią linię do
const static map<int,int> A:: myMap = A::create_map();
Compiler skarg: „statyczne” nie może być wykorzystywane przy definiowaniu (w przeciwieństwie do deklarowania) statycznego członka danych”?
zastanawiam się, dlaczego? Co znajduje się w logikę lub rozumowanie za tym stoi?
inaczej oznaczałoby to statyczne członkostwo, które byłoby niespójne. –
@BenVoigt mało prawdopodobne, statyczne dla członkostwa jest zbędne - nie można w ten sposób definiować niestatycznych członków. – Slava
@Slava: Absolutnie prawdziwe, byłoby niespójne i zbędne, więc dwa dobre powody, by to zabronić. Ale nie sądzę, że pytanie dotyczyło statycznego powiązania. –