Поделиться через


Предупреждение компилятора (уровень 1) C4928

недопустимая инициализация копии; неявно применены несколько пользовательских преобразований

Обнаружено несколько пользовательских процедур преобразования. При компиляции выполняется код, содержащийся во всех этих процедурах.

Данное предупреждение по умолчанию отключено. Дополнительные сведения см. в разделе Отключенные по умолчанию предупреждения компилятора.

В следующем примере возникает предупреждение C4928:

// C4928.cpp
// compile with: /W1
#pragma warning(default: 4928)

struct I
{
};

struct I1 : I
{
};

struct I2 : I
{
};

template <class T>
struct Ptr
{
   operator T*()
   {
      return 0;
   }

   Ptr()
   {
   }

   Ptr(I*)
   {
   }
};

int main()
{
   Ptr<I1> p1;
   Ptr<I2> p2 = p1;   // C4928
   // try one of the following two lines to resolve this error
   // Ptr<I2> p2(p1);
   // Ptr<I2> p2 = (I1*) p1;
}