Свойства Visual C++: нет виртуальных геттеров/сеттеров?
Я попытался реализовать свойства в "интерфейсе"
interface IPolygon { __declspec(property(get = _GetArea)) double area; // getters setters virtual double _GetArea() const abstract; }; class CPoly : public IPolygon { public: CPoly(.....) { ......} protected: // propertis getter/setter virtual double _GetArea() const override { return .. calculation of area ... }; } .. somewhere in code: CPoly mypolygon; double xarea = mypolygon.area;...
Но при использовании CPoly-класса линкер! говорит, что IPolygon::_GetArea() еще не реализован. Затем меняется
interface IPolygon { __declspec(property(get = _GetArea)) double area; // getters setters virtual double _GetArea() const { return this->_GetArea(); } };
вызов геттера в "интерфейсе" он будет работать
но это не так, как должно быть ...
Есть ли способ определить абстрактные геттеры и сеттеры свойств или абстрактные свойства? чтобы получить интерфейс, похожий на c#.
(это не вопрос, имеет ли смысл использовать propertis в c++ в любом случае!)
Что я уже пробовал:
Перепробовали вышеперечисленные коды и варианты
Отладили шаг b и при имплементации чего-либо в виртуальный фонд в IPolygon (вместо абстрактного),
отладчик переходит в эту функцию, а не в унаследованную функцию класса (поэтому IPolygon::_GetArea() вызывается вместо CPoly::_GetArea() )