const char*
에서 std::string
으로의 암시 적 변환이 왜 후자의 경우에 작동하지 않습니까? 가능한 경우 C++ 표준에 대한 참조를 링크하십시오.배열 초기화 자 목록의 암시 적 변환
변형 1
struct Foo {
Foo(const char* a) {}
};
int main() {
// works well for a "const char*" accepting constructor
Foo* foo = new Foo[1] { "a" };
}
변형 2 :
struct Foo {
Foo(std::string a) {}
};
int main() {
// could not convert from "const char*" to "Foo"
Foo* foo = new Foo[1] { "a" };
}
암시 적 캐스트와 같은 것은 존재하지 않습니다. 캐스트 (명시 적 유형 변환) 및 유형 병합 (암시 적 유형 변환)이 있으며, 어느 것을 결정합니다. –
페이지 이름을 확인하십시오 : http://en.cppreference.com/w/cpp/language/implicit_cast – Hertz