在C ++的构造函数调用中通过命名参数分配类变量

时间:2013-09-06 22:01:06

标签: c++

我来自C#背景。在那里我可以做这样的事情:

Callback callback = new Callback
    {
        src = src,
        callbackPtr = callbackPtr
    };

假设只有一个空构造函数:

Callback(){}

并且这两个变量都是公开的。

在C ++中是否存在类似的东西,或者我必须在这里创建参数化构造函数?

2 个答案:

答案 0 :(得分:4)

如果Callback是普通旧数据(POD)类型,您可以这样做:

Callback callback = {src, callbackPtr};

使用结构初始化语法。它假定srccallbackPtr在类定义中以该顺序列出。

这适用于C ++ 03和C ++ 11。在C ++ 11中,非POD类可以通过定义采用std::initializer_list的构造函数来使用此语法。

答案 1 :(得分:0)

你可以这样做:

Callback* callback = new Callback
    {
        src,
        callbackPtr
    };

假设Callback的字段在该顺序中具有相同的数据类型,并且 - 需要注意的是 - 字段必须是公开的。