Имеется класс, наследованный от структуры (закос под ком). Класс хитро спрятан внутри dll и наружу можно получить только указатель на интерфейс через функцию dll.
Вот реализация класса:
struct ITDAlgoritmLibrary
{
virtual HRESULT __stdcall LoadSettings() = 0;
};
class CTDAlgoritmLibrary : public ITDAlgoritmLibrary
{
virtual HRESULT __stdcall LoadSettings() {return S_OK;};
public:
CTDAlgoritmLibrary();
~CTDAlgoritmLibrary();
};
Как запретить компилляцию кода содержащего вызов оператора delete для интерфейса. Например:
ITDAlgoritmLibrary *obj = NULL; // интерфейс получим в эту переменную
TDAlgoritmLibraryInstance(&obj); // этой функцией из dll получаем объект
delete obj; // а вот такую штуку хотелось бы запретить даже на этапе компилляции (или линковки)
Естественно, что компилляция и вызов следующего кода не должен вызывать ошибок. То есть для CTDAlgoritmLibrary* можно вызвать delete, а для ITDAlgoritmLibrary* нельзя.
CTDAlgoritmLibrary *obj = new CTDAlgoritmLibrary();
delete obj;
Заранее спасибо.
... << RSDN@Home 1.0 beta 6a >>