我必须将哪些参数传递给函数来执行对象的隐式构造?

Bee*_*and 5 c++

如果这是一个骗局,我道歉.我发现了一些帖子.防止隐式转换,但没有任何重新.鼓励隐含的结构.

如果我有:

class Rect
{
public:
    Rect( float x1, float y1, float x2, float y2){};
};
Run Code Online (Sandbox Code Playgroud)

和自由功能:

Rect Scale( const Rect & );
Run Code Online (Sandbox Code Playgroud)

为什么会

Rect s = Scale( 137.0f, 68.0f, 235.0f, 156.0f );
Run Code Online (Sandbox Code Playgroud)

不做隐式构造a const Rect&而是生成此编译器错误

'Scale' : function does not take 4 arguments
Run Code Online (Sandbox Code Playgroud)

Seb*_*anK 11

因为该语言不支持此功能.你必须写

Rect s = Scale(Rect(137.0f, 68.0f, 235.0f, 156.0f));
Run Code Online (Sandbox Code Playgroud)

  • ...或过载缩放以接受4个浮点数. (3认同)

MSa*_*ers 7

C++中的"转换"是在一种类型的对象和另一种类型的对象之间.你有4个对象(所有类型都是float),所以你可以有4个转换到4个其他类型.没有办法将4个对象(在C++的意义上)转换为一个对象.