У меня есть базовый класс, который представляет собой шаблон, который выглядит следующим образом:
template <typename T>
class Foo
{
public:
T bar;
};
Что я хотел бы сделать, это ввести аргумент шаблона, который можно использовать для управления режимом доступа членаbar.
Примерно так:
template <typename T,bool publicBar=true>
class Foo
{
public:
// If publicBar is false, insert protected: here
T bar;
};
Возможно ли это?
Спасибо.
Редактировать: Многие спрашивали так, для тех, кто интересуется, почемуЯ делаю это, вот мой реальный код!
// Class used for automatic setter/getter generation.
template <typename T,publicSetter=true>
class Property
{
public:
Property(){}
Property(T value):mObject(object){}
T operator()()const
{
return mObject;
}
public: // This is where I want the protected:
virtual void operator()(T newObject)
{
this->mObject = newObject;
}
private:
T mObject;
};