Рассмотрим следующий пример:
#include <iostream>
class C {
int intArray[2] { 1, 2 };
int *firstElementPt;
public:
int getFirstElement() volatile {
firstElementPt = intArray;
return *firstElementPt;
};
};
int main()
{
volatile C c;
std::cout << c.getFirstElement();
}
Это дает мне следующую ошибку компиляции:
In member function 'int C::getFirstElement() volatile':
10:28: error: invalid conversion from 'volatile int*' to 'int*' [-fpermissive]
Я новичок в C ++. Я читал, что объявление экземпляра как volatile неявно делает все его переменные-члены volatile. И я прочитал, что объявление функции-члена как volatile будет означать пометить скрытый указатель *this
как volatile. Так почему же присвоение firstElementPt = intArray;
все еще не разрешено и приводит к error: invalid conversion from 'volatile int*' to 'int*'
?