C ++: при возврате адреса переменной члена класса компилятор заставляет его иметь тип const *

0

Я пытался написать функцию удобства, чтобы предоставить указатель на unordered_map, который был похоронен внутри объекта, содержащегося в другом объекте. По какой-то причине компилятор (Visual Studio 2010) заставляет меня объявлять указатель как указатель на объект const.

Код функции выглядит следующим образом: (я не хотел, чтобы у него был тип возвращаемого const):

const ezx::iserver::strategy_map* strategy_map(const ezx::iserver::StrategyInfo* strategyInfo)
{
  if (strategyInfo)
  {
     const ezx::iserver::strategy_map* map = &strategyInfo->strategyTVS.tagValues;
     return map;
   }
   return NULL;
}

Объект определяется без какого-либо модификатора const:

class TagValueMsg : public EZXMsg
{
    public:     
      strategy_map tagValues;
      ...
}

Этот TagValueMsg содержится как поле участника в другом классе.

class StrategyInfo : public EZXMsg
{
     public:
    TagValueMsg strategyTVS;
        ...
}

Поскольку ничто не объявлено нигде const, я не понимаю, почему const ezx::iserver::strategy_map*?

Теги:
pointers
const

1 ответ

4
Лучший ответ

Поскольку ваш закрытый объект также является const когда он передается в функцию:

strategy_map(const ezx::iserver::StrategyInfo* strategyInfo)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню