у вас проблема с идеей совершенно неверная, я не хотел, чтобы сеттер и геттер не были частью параметров шаблона, я хотел исключить T.

далось создать некоторый класс со всеми вещами, которые мы ожидаем от одного. Я имею в виду, что при его использовании вам не нужно вызывать функции, просто используяoperator = сделаю всю работу. но есть только одна вещь, я думаю, было бы неплохо, если бы мы могли решить:

template <class T, class X,void (T::*setFunc)(const X&),const X& (T::*getFunc)()const> class property
{ 
    T* const owner;
    X data;
    friend T;
    property(T*const  pOwner) : owner (pOwner)
    {
    }
public:
    property& operator = (const X& input){(owner->*setFunc)(input);return *this;}
    operator const X&()const {return (owner->*getFunc)();}
};

struct c
{
protected:
    void setInt(const int& data);
    const int& getInt() const;
public:
    c();
    property<c, int ,&setInt,&getInt> myInt;
};

c::c() : myInt(this)
{
}

void c::setInt(const int& data)
{
    myInt.data = data;
}
const int& c::getInt() const
{
    return myInt.data;
}

Свойство see class имеет 4 аргумента, а первым аргументом является сам тип класса. Я хотел бы знать, можем ли мы сделать что-нибудь, чтобы извлечь тип класса из двух потребностей свойства указателей на функции. что-то вродеproperty <int, &setInt, &getInt> myInt;.

Вы знаете какой-либо способ устранить первый параметр шаблона?

Ответы на вопрос(4)

Ваш ответ на вопрос