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


Ошибка компилятора C2594

"operator" : неоднозначные преобразования из типа1 в "type2"

Замечания

Преобразование типа 1в тип2 не было более прямым, чем любое другое. Мы предлагаем два возможных решения для преобразования из типа1 в тип2. Первый вариант — определить прямое преобразование типа 1 в тип2, а второй вариант — указать последовательность преобразований из типа1 в тип2.

Пример

В следующем примере создается C2594. Рекомендуемое разрешение ошибки — это последовательность преобразований:

// C2594.cpp
// compile with: /c
struct A{};
struct I1 : A {};
struct I2 : A {};
struct D : I1, I2 {};

A *f (D *p) {
   return (A*) (p);    // C2594

// try the following line instead
// return static_cast<A *>(static_cast<I1 *>(p));
}