C++中的嵌套隐式转换
Nested implicit conversion in C++
我希望在两个级别中进行隐式转换。下面的代码片段是我所面临问题的原型。
//Sources
class A
{
public:
void print()
{
std::cout <<"Class A"<< std::endl;
}
operator int()
{
return 1;
}
};
class B
{
public:
void print()
{
std::cout <<"Class B"<< std::endl;
}
operator A()
{
return A();
}
};
class C
{
public:
void print()
{
std::cout <<"Class C"<< std::endl;
}
operator B()
{
return B();
}
};
void print_(A a)
{
a.print();
}
//driver
int main( int argc, char* argv[] )
{
C c;
//print_( c ); // compilation error
//print_( C() ); // compilation error
print_( c.operator framework::configuration::B() ); //when explicitly invoked it worked
return 0;
}
我查看了以下链接中提供的示例,确信这是可以实现的。
转换运算符在C++中是如何工作的?
操作员过载
标准只允许一个涉及用户定义类型的隐式转换。您有两个,因此出现编译错误。
见12.3/4
最多将一个用户定义的转换(构造函数或转换函数)隐式应用于单个价值
相关文章:
- 嵌套在类中时无法设置成员数据
- 无法访问嵌套类.类的使用无效
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 在C++中搜索嵌套多映射值
- 在C++中将矢量转换为嵌套地图
- C++嵌套if语句,基本货币交换
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 嵌套的匿名命名空间
- 没有从Singleton到嵌套Listener*的可行转换
- C++ 嵌套类模板 错误 C2440 '=':无法从'type'转换为'same type'
- 如何在C++中将基本嵌套循环转换为递归循环
- 用c++中的重新解释强制转换扩展嵌套宏
- 状态机:使用转换矩阵而不是嵌套的开关案例C++
- 从嵌套的 for 循环转换为嵌套的 while 循环时出现问题
- 代码在嵌套开关中选择的每个情况和错误C4244在c++中从double转换为float后停止/结束
- C++中的嵌套隐式转换
- 不能在嵌套模板类型之间转换
- Boost::fusion::result_of::as_set(或as_vector)从复杂(嵌套)MPL序列转换