次の方法で共有


コンパイラ エラー C3854

' = ' の左側の式は、関数として評価されます。 関数に割り当てることはできません (関数は左辺値ではありません)

参照を再初期化することはできません。 関数への参照を逆参照すると、代入できない rvalue である関数が生成されます。 このため、関数への参照を使用して割り当てることはできません。

次の例では C3854 が生成されます。

// C3854.cpp
int afunc(int i)
{
   return i;
}

typedef int (& rFunc_t)(int);
typedef int (* pFunc_t)(int);

int main()
{
   rFunc_t rf = afunc;   // OK binding a reference to function
   pFunc_t pf = &afunc;   // OK initializing a pointer to function

   *pf = &afunc;   // C3854
   // try the following line instead
   // pf = &afunc;
   *rf = &afunc;   // C3854
}