Думая о способе имитации свойства C# 's в C++, я пришел к следующему решению:C# -как свойства в C++
#include <iostream>
class obj_with_property {
private:
class mykey {};
public:
class int_property {
private:
int m_v;
public:
int_property (int v, mykey) : m_v (v) {
}
int_property & operator = (int v) {
m_v = v;
return * this;
}
operator int() const {
return m_v;
}
};
int_property A;
obj_with_property() : A (int_property (0, mykey())) {
}
};
int main(int argc, char **argv) {
obj_with_property obj;
std::cout << obj.A << std::endl;
obj.A = 25;
std::cout << obj.A << std::endl;
return 0;
}
Я думаю, этот подход может быть дополнительно улучшить, например, сделав int_property
шаблоном и т. д. Теперь я не могу себе представить, что я первый, у кого есть эта идея. Кто-нибудь знает, обсуждался ли подобный подход в любом месте?
Я сделал такие вещи, в поддерживаемых значениях по умолчанию и иерархических свойствах, и был шаблонизирован. Я также однажды установил поддержку setter (так что 'property = x' вызовет функцию), но поскольку он не был использован в моем проекте, я опустил его. Я думаю, что ваш подход на правильном пути. – Synxis
Вопрос: «Кто-нибудь знает, обсуждался ли подобный подход где-нибудь?» В этом случае мне не нужно изобретать колесо. – JohnB
NO. Я не хочу обсуждать *, как можно моделировать свойства на C++. Мой точный вопрос заключается в том, обсуждал ли какой-либо из различных гуру C++ этот конкретный подход в любой из многих книг или блогов C++. – JohnB