Неоднозначное предупреждение о обращении: мне это волновать?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неоднозначное предупреждение о обращении: мне это волновать?

Сообщение Anonymous »

Этот вопрос можно считать, вероятно, теоретическим, поскольку я не понимаю, почему у меня будет такой дизайн в реальном коде.
У меня есть два класса с некоторыми операторами конверсии: < /p>
< Pre Class = "lang-cpp prettyprint-override">

Код: Выделить всё

class B;
class A {
public:
A() = default;
A(B const &);
};
class B {
public:
B() = default;
operator A();
};

A::A(B const &) {};
B::operator A() { return A{}; };

int main() {
[[maybe_unused]] A ad{B{}};   // direct init
[[maybe_unused]] A ac = B{};  // copy init
}
< /code>
live < /p>
только с GCC и с инициализацией копирования только я получил это предупреждение: < /p>
   Предупреждение: выбор 'b :: operator a ()' over 'a :: a (const b &)' [-wconversion]

Предупреждение: для преобразования из 'b' 'A' [-wconversion]

Примечание: потому что последовательность преобразования для аргумента лучше < /p>
< /blockquote>
Не будучи хорошо Правила обращения, я не понимаю, имеет ли это предупреждение? Если нет, то как его можно замолчать (это может быть болезненным с -Веррором 
)? природа. Являются ли последовательности конверсии в зависимости от реализации в некоторой степени?

Подробнее здесь: https://stackoverflow.com/questions/794 ... uld-i-care
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»