Я читал, что компиляторы С++ могут неявно преобразовывать типы, когда предусматриваются преобразования конструкторов или операндов. Я действительно нашел пример кода, который выглядит примерно так:
class Dog{
private:
string name;
public:
Dog(string n):name(n){} //This as the converting constructor
}
int main(){
Dog d = "rover";
}
Всякий раз, когда я запускаю этот код, компилятор выдает сообщение об ошибке:
преобразование из 'const char [6] в нескалярный тип' Собака запросила Собака d = "rover";
При компиляции я добавляю параметр компилятора -std=c++11
, поэтому он не должен быть о версии на С++, верно?
Примеры, которые я нашел в Интернете (по крайней мере для меня), выглядят совершенно одинаковыми, поэтому я не знаю, что здесь происходит.
Мои данные об этой теме приводятся, например, из этого видео:
Преобразовать конструктор и перегружать операторы - thenew moston