Кажется, вы запрашиваете неявное преобразование, как в C ++ .У D есть только несколько из них - есть некоторые неявные преобразования по умолчанию в языке (int в float, non-const в const), и псевдоним this для преобразования типа, которым вы управляете, во что-тоelse.
Однако не существует метода для преобразования некоторого типа, которым вы не управляете, во что-то другое (например, строку в экземпляр класса).Поскольку это, кажется, то, что вы хотите, ответ - нет, D. не может этого сделать.
Несколько других вещей в вашем коде: string test(const Word& thisword)
- это не D - классы всегда являются ссылочными типами, ипоэтому добавление амперсанда в C ++ не нужно, а также не работает (ссылки в D помечены ref
вместо &
).
Кроме того, подумайте, почему вы хотите использовать класс вместоструктура в этом случае - большая часть кода D использует много структур и мало классов, так как основной привлекательностью классов в D является наследование (а второе притяжение - ссылочное поведение).