Прокси-констант в неконфессиональный неявный переход в C ++?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Прокси-констант в неконфессиональный неявный переход в C ++?

Сообщение Anonymous »

Я пытаюсь создать прокси -класс прокси -сервера в C ++ для управления транзакциями через дерево узлов (INode) Формирование модели данных моей приложения.
Вот очень простой пример:

, который я хотел бы, чтобы это было так: p> p>
, который я хотел бы доступить как as as a triviell as a triviell. />
rootNode->getA()->getX();
rootNode->getA()->setX(42.0f);
// NOT: rootNode->getA().edit()->setX(42.0f);

Когда называется сеттер (например, setx ), необходимо создать кэш для управления механизмом транзакции, то есть: geta () в первых вызовах с помощью getx () возвращает прокси, указывающий на Nodea без создания кеша. Но geta () перед setx требует генерирования этого кэша./* Transaction wrapper template:
We attempt to have different behaviour, base on if the wrapper->getter()-const or wrapper->setter()
being getter and setter members of T
template */

class TransactionProxy {
public: using NonConstT = std::remove_cv_t < T > ;

// For const access
const T * operator -> () const {
std::cout
T * operator -> () {
std::cout (m_obj));
// INITIALIZATION of Transaction cache here!!
return w;
}

TransactionProxy(T * obj): m_obj(obj) {}

private: T * m_obj;
};

// ... dots
// Within RootNode
TransactionProxy <
const NodeA > getA() const {
return TransactionProxy <
const NodeA > (m_a.get());
}
< /code>
Это не работает, поскольку оператор актеров не работает неявно. 1: < /strong> операция только для чтения

const operator-> all to 8noderoot

const operator-> Вызов для 5Nodea

Получение x Значение: 1 < /p>
Пример 2: < /strong> write

const Orporation-> Вызов 8NODOROOTISIZIZIZE COM 5nodea

non-const operator-> Вызов для 5nodea

x от 1 до 42 < /p>
< /blockquote>
Примечание: как вы видите, только последний оператор-> () < /code> перед Setx () < /code> не является Constst, и создает C-node node node node node node node node node node node node nodest no-const. Nodea .
Можно ли реализовать что -то подобное без рефлексии TS? Как? < /Strong> < /p>

фрагмент кода: < /strong> < /p>
#include
#include

class INode {};

/* Transaction wrapper template:
We attempt to have different behaviour, base on if the wrapper->getter()-const or wrapper->setter()
being getter and setter members of T
template */

class TransactionProxy {
public: using NonConstT = std::remove_cv_t < T > ;

// For const access
const T * operator -> () const {
std::cout
T * operator -> () {
std::cout (m_obj));
// INITIALIZATION of Transaction cache here!!
return w;
}

TransactionProxy(T * obj): m_obj(obj) {}

private: T * m_obj;
};

class NodeA: public INode {
private: float m_x;

public: NodeA(float x): m_x(x) {}

float getX() const {
std::cout getX();
}
std::cout (rootW -> getA()) -> setX(42.0 f);
// rootW->getA()->setX(42.0f); // NOT WORKING!!
// setX require a TransactionProxy (non-const)
// Looking for implicit const conversion, or const priority over non-const overloads
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... ition-in-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Прокси-констант в неконфессиональный неявный переход в C ++?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Неявный переход Visual Studio IDE Razor не работает
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Неявный переход Visual Studio IDE Razor не работает
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Visual Studio Ide Razor неявный переход не работает
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Ошибка прокси-сервера Прокси-сервер получил неверный ответ от вышестоящего сервера. Прокси-сервер не смог обработать зап
    Anonymous » » в форуме Apache
    0 Ответы
    194 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»