Запрет на delete во время компилляции...
От: Keeper_andrew Беларусь  
Дата: 22.02.03 12:42
Оценка:
Имеется класс, наследованный от структуры (закос под ком). Класс хитро спрятан внутри 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 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.