我来自C#背景。在那里我可以做这样的事情:
Callback callback = new Callback
{
src = src,
callbackPtr = callbackPtr
};
假设只有一个空构造函数:
Callback(){}
并且这两个变量都是公开的。
在C ++中是否存在类似的东西,或者我必须在这里创建参数化构造函数?
答案 0 :(得分:4)
如果Callback
是普通旧数据(POD)类型,您可以这样做:
Callback callback = {src, callbackPtr};
使用结构初始化语法。它假定src
和callbackPtr
在类定义中以该顺序列出。
这适用于C ++ 03和C ++ 11。在C ++ 11中,非POD类可以通过定义采用std::initializer_list
的构造函数来使用此语法。
答案 1 :(得分:0)
你可以这样做:
Callback* callback = new Callback
{
src,
callbackPtr
};
假设Callback
的字段在该顺序中具有相同的数据类型,并且 - 需要注意的是 - 字段必须是公开的。