我想天气可以在C ++中让编译器推断从一种起始类型到目标类型的一系列转换?在下面的示例中,有一个隐式转换
class a
到class b
class b
到cont char *
然而,编译器似乎没有尝试推断隐含的转换,这意味着多个转换步骤,在下面的示例中从class a
到const char *
。在下面的示例中,cout << x
将返回错误。
/*g++ -g -std=c++14 file.cpp -o file.exe
* file.cpp:
*/
#include <stdio.h>
#include <iostream>
#include <string>
class b {
public:
b(const char *n) : n(n) {};
operator const char *() const {
return n;
}
const char *n;
};
class a {
public:
a(const char *n) : n(n) {};
operator b() const {
return b(n);
}
const char *n;
};
int main(int argc, char **argv) {
a x("hello");
b y = x;
std::string z = (const char*)y;
std::cout << y;
std::cout << (b)x;
//std::cout << x; would fail
return 0;
}