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*か?

4

1 に答える 1

4

囲んでいるオブジェクトもconst関数に渡されるためです。

strategy_map(const ezx::iserver::StrategyInfo* strategyInfo)
于 2013-10-08T17:00:11.537 に答える