Aşağıdaki kod, p2 const ile bildirilmiş olsa bile, değeri * p2 olarak değiştirmeme izin verir.Bir işaretçi değişkeni ile const ve decltype kullanma
int *p1;
const decltype(p1) p2 = new int(100);
*p2 = 200;
cout << "*p2: " << *p2 << endl; // Outputs *p2: 200
Ancak, ben yerine "* int" "decltype (p1)", daha sonra derleyici bayrakları bir hata kullanırsanız.
const int * p2 = new int(100);
*p2 = 200;
cout << "*p2: " << *p2 << endl;
error: assignment of read-only location ‘* p2’
*p2 = 200;
^
g ++ (Ubuntu 4.8.2- 19ubuntu1) 4.8.2 kullanıyorum.
İşaretçi değişkenine uygulandığında decltype const belirticisini yoksayıyor mu?
@quantdev haklısınız, test yapmadan başka bir SO yanıtından kopyaladım. Başka bir çözüm var mı? –
bildiğim, ilginç bir konu var .. – quantdev
@quantdev 'std :: remove_reference :: type * p2 = ...;' 'dır, ancak bu biraz çirkin olmasına rağmen –