Dlaczego tablice referencji są nielegalne?
Poniższy kod nie jest kompilowany.
int a = 1, b = 2, c = 3;
int& arr[] = {a,b,c,8};
Co mówi o tym standard C ++?
Wiem, że mogę zadeklarować klasę zawierającą odwołanie, a następnie utworzyć tablicę tej klasy, jak pokazano poniżej. Ale naprawdę chcę wiedzieć, dlaczego powyższy kod się nie kompiluje.
struct cintref
{
cintref(const int & ref) : ref(ref) {}
operator const int &() { return ref; }
private:
const int & ref;
void operator=(const cintref &);
};
int main()
{
int a=1,b=2,c=3;
//typedef const int & cintref;
cintref arr[] = {a,b,c,8};
}
Możliwe jest użyciestruct cintref
zamiastconst int &
symulować tablicę odwołań.