将结构返回为空
Return struct as void
我有一个返回 void 数据的函数。我需要将其作为一个结构接收。例如。说一个结构widget_data。一个返回 void 数据的函数 GetObjectData((。
widget_data *wd=GetObjectData();
和GetObjectData()
返回sd->data
.
其中sd
是结构,数据是void
类型。
当我编译它时,我收到错误消息,例如
invalid conversion from void* to widget_data*
static_cast
可以将void*
转换为指向特定类型的指针:
widget_data* wd = static_cast<widget_data*>( yourVoidPointer );
widget_data *wd=(widget_data *)GetObjectData();
或
widget_data *wd=reinterpret_cast<widget_data *>(GetObjectData());
让我们先澄清一下。 void
没有任何意义,因此您不能拥有 void 类型的数据。因此,如果函数返回void
则不可能返回任何数据。现在,void *
是一个空白指针。您可以将其视为指向某处的内存地址。它可能指向任何类型的数据,甚至无处可去。如果你非常确定你的函数返回一个指向widget_data
对象的指针,那么你可以做一个reinterpret_cast。例如:
widget_data *wd = reinterpret_cast<widget_data *> (GetObjectData ());
如果您不确定,则必须检查返回的数据类型。如果启用了 RTTI(默认情况下通常启用它(,并且基类至少有一个虚拟方法,则这可能是可能的。然后你可以使用dynamic_cast。如果无法做到这一点,则必须提出一些检查返回类型的自定义方法。
这是
有效的 C,但不是有效的C++。 您需要在C++中进行显式强制转换,例如
widget_data *wd = static_cast<widget_data *>(GetObjectData());
相关文章:
- 在类中返回结构时出现问题
- 在 C 函数中返回结构会导致分段错误
- 如何从函数返回结构
- c++优化地返回结构和向量
- 从函数 BY VALUE 返回数组,返回结构时会发生什么?
- C++,使用 if/else 返回结构中的值
- 如何在C++中返回结构?
- 难以从另一个结构中的函数返回结构
- 返回结构的方法的正确语法是什么
- C++ 使用成员函数返回结构体指针属性的值
- 什么安全?从函数返回结构或指针
- 为什么要定义一个返回结构的 lambda 函数,而不是直接定义结构
- C 如何将数据文件读取到结构或向量以及返回结构或向量
- 从线程执行的函数中返回结构数组
- 取决于参数的数量,将其返回结构对象,并将其分配给常规结构的对象
- 返回结构数组 c++
- 如何从 C++ 中的函数返回结构
- 从类的方法返回结构中的值
- 如何从C 中的类返回结构
- 返回结构的特定值