Что означает такая конструкция?
class Class
{
private:
double* vertical;
double* horizontal;
public:
static double* GetVertical() { return vertical; }
static double* GetHorizontal() { return horizontal; }
}
void Class::SetFunction(AnotherClass & another)
{
*Class::GetVertical() = another.mVerticalPlane;
*Class::GetHorizontal() = another.mHorizontalPlane;
}
Это разыменование? Если да, то почему нужно разыменовывать сам класс, а не его экземпляр?
Это скорее всего разыменование результата вызова статической функции (или функции из пространства имён, как корректно заметил в комментариях VTT, но всё же несколько странно иметь пространство имён с именем SomeClass). Например:
struct SomeClass
{
static int* Method();
};
В общем случае, возвращаться может не обычный "голый" указатель, а какой-то другой класс, имеющий перегруженный operator*, в частности, сюда подпадают всевозможные умные указатели или итераторы контейнерных классов.
В языке С++ постфиксные операторы и :: всегда имеют приоритет над унарными. Поэтому никакого "разыменовывать самого класса" в вашем коде нет. Выражение
*Class::GetVertical()
группируется грамматикой языка как
*(Class::GetVertical())
то есть это применение оператора * к результату вызова функции Class::GetVertical.
Зачем автор кода в данном случае использовал квалифицированное имя функции Class::GetVertical вместо просто GetVertical - не ясно, но ошибки в этом нет.
Продвижение своими сайтами как стратегия роста и независимости