C++builder vs C++ "стандартный"

Werdna

Пишу программку на c++builder.
Очень зря выбираешь инструмент, который используют злые язычнеги.
Выбирай православный компилятор. Например, gcc. Помочь смогу, но не в ГЗ. :)

yroslavasako

gcc - это компилятор, а borland builder - это RAD, чувствуешь разницу?

Andbar

Могу сразу подсказать, что билдеровский вариант языка ни в коей мере не удовлетворяет стандарту
В стандарте не хватает средств для поддержки борландовских библиотек.

yroslavasako

бред. Просто борланд не умеет пользоваться тем, что уже есть.

Serab

В стандарте не хватает средств для поддержки борландовских библиотек.
Стандарт С++ — вообще нечто ужасное, его, если честно, ни на что не хватает. А расширять уже поздно. Так-то.

yroslavasako

стандарт достаточно гибок для очень большого диапазона применений

Andbar

Как минимум, в Object Pascal'е есть некоторое количество встроенных возможностей языка, которые в C++ не всегда можно просто и элегантно реализовать. Из их числа типы procedure/function of object, class of TObject, TMethod, а также возможности базового класса TObject, которые противоречат сишной идеологии "не платить за то, что не используется". То же конструирование объекта в OP - гораздо более гибко управляемый процесс, по сравнению с C++.
Так что если бы borland делали builder-овский компилятор максимально приближенный к стандарту, у них бы не вышло добиться такой совместимости между Builder'ом и Delphi.

yroslavasako

1. Function of object - функция, привязанная к объекту, элементарный пример карируемой функции. Как часть функциональных фич реализована через темплатную библиотеку в бусте.
2. Метаклассов (class of ) не хватает, но Александреску предложил неплохую замену ему. В ней нет автоматического добавления всех потомков класса, но есть возможность объявить список типов, перечислив произвольные.
3. Используй виртуальное наследование - и будешь иметь не менее гибкое управление процессом создания класса, чем в дельфе.

Andbar

3. Используй виртуальное наследование - и будешь иметь не менее гибкое управление процессом создания класса, чем в дельфе.
На сколько я понимаю, виртуальное наследование позволяет решить вопрос повторного наследования одного и того-же класса при множественном наследовании. В OP последнего нет вообще (и я не вижу в этом ничего плохого). Но виртуальное наследование не решает вопросы контроля момента вызова конструктора класса-родителя. Кроме того, непонятно, как реализовать аналог метода AfterConctruction: даже если написать замену оператору new, то это не поможет с объектами, которые не используют этот оператор.

yroslavasako

читай матчасть ещё раз

Serab

как реализовать аналог метода AfterConctruction: даже если написать замену оператору new
оператор new (функция operator new =) отвечает только за выделение памяти, ничего о создаваемом объекте не знает. Можно переписать только эту часть. Так по Маерсу, я что-то упустил?

Andbar

гм... да, так и есть, просто можно было бы извратиться и хакнуть стек... А нормальными средствами этот полезный метод не реализуешь.
Оставить комментарий
Имя или ник:
Комментарий: