Megosztás a következőn keresztül:


C3849-fordítási hiba

a "type" típusú kifejezés függvénystílusú hívása elveszítené a const és/vagy a volatilis minősítőket az összes rendelkezésre álló operátor túlterhelése esetén

Megjegyzések

A megadott const-volatile típusú változók csak azonos vagy nagyobb const-volatilis minősítéssel definiált tagfüggvényeket hívhatnak meg.

A hiba kijavításához adjon meg egy megfelelő tagfüggvényt. Konstans vagy illékony minősített objektumon nem hajthat végre átalakítást, ha az átalakítás a minősítés elvesztését okozza. Minősítőket szerezhet, de konverzió esetén nem veszítheti el a minősítőket.

Example

Az alábbi példa c3849-et hoz létre:

// C3849.cpp
void glbFunc3(int i, char c)
{
   i;
}
typedef void (* pFunc3)(int, char);

void glbFunc2(int i)
{
   i;
}

typedef void (* pFunc2)(int);

void glbFunc1()
{
}
typedef void (* pFunc1)();

struct S4
{
   operator ()(int i)
   {
      i;
   }

   operator pFunc1() const
   {
      return &glbFunc1;
   }

   operator pFunc2() volatile
   {
      return &glbFunc2;
   }

   operator pFunc3()
   {
      return &glbFunc3;
   }

   // operator pFunc1() const volatile
   // {
   //    return &glbFunc1;
   // }
};

int main()
{
   // Cannot call any of the 4 overloads of "operator ()(.....)" and
   // "operator pFunc()" because none is declared as "const volatile"
   const volatile S4 s4;  // can only call cv member functions of S4
   s4();   // C3849 to resolve, uncomment member function
}