【发布时间】:2015-07-01 13:15:00
【问题描述】:
#include <iostream>
using namespace std;
struct From{
int i;
From(){}
};
struct By{
By(const From& f){}
};
struct To{
To(const By& b){}
};
int main() {
From f;
To to = f; // error: conversion from 'From' to non-scalar type 'To' requested
// By by = f;
// To to = by;
return 0;
}
有什么方法可以在不修改 By 和 To 的情况下完成这项工作?
而且也没有这样做:
By by = f;
To to = by;
【问题讨论】:
-
您是否希望编译器“理解”可以将
From转换为By,然后再转换为To?还是您根本不想通过By? -
如果围绕这些类型创建一个包装类,就可以解决这个问题。
-
@Amit 当然会使用
By的构造函数,但我希望编译器为我这样做! -
@juanchopanza 隐式转换的要点是编译器为你做事,例如这里:ideone.com/OBSchN,在函数调用中,你不需要对象,编译器会为你转换,我这里需要的是双重转换,我知道他为什么不能这样做,但是可能有一个技巧