Указатель на класс в D работает точно так же, как указатель на структуру, и для доступа к элементам класса вы используете оператор доступа точка (.), так же, как и для указателей на структуры. Также как и со всеми указателями, вы должны его инициализировать перед использованием.
Попробуем следующий пример, чтобы понять концепцию указателя на класс:
import std.stdio; class Box { public: // Объявление конструктора this(double l = 2.0, double b = 2.0, double h = 2.0) { writeln("Вызван конструктор."); length = l; breadth = b; height = h; } double Volume() { return length * breadth * height; } private: double length; // Длина коробки double breadth; // Ширина коробки double height; // Высота коробки } void main() { Box box1 = new Box(3.3, 1.2, 1.5); // Объявление box1 Box box2 = new Box(8.5, 6.0, 2.0); // Объявление box2 Box *ptrBox; // Объявление указателя на класс. // Сохранить адрес первого объекта ptrBox = &box1; // Теперь пробуем обратиться к члену, используя оператор доступа writeln("Объём box1 : ", ptrBox.Volume()); // Сохранить адрес второго объекта ptrBox = &box2; // Теперь пробуем обратиться к члену, используя оператор доступа writeln("Объём box2: ", ptrBox.Volume()); }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Вызван конструктор. Вызван конструктор. Объём box1 : 5.94 Объём box2: 102