Что означает такая конструкция?
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
- не ясно, но ошибки в этом нет.
Виртуальный выделенный сервер (VDS) становится отличным выбором
1) Код должен быть или кроссплатформенный, или 2а варианта кода (под Windows и Linux)