我有一个错误; h文件中没有默认构造函数,如何设置有效的构造函数

I have an error; no default constructor in h file, how do I set valid constructors

我正在尝试使用 API 中的以下几行:

    public value struct DeviceInfo
{
    Byte    DeviceCompatibility;
    Size    imageSize;

    static initonly DeviceInfo Empty = { (Size::Empty, 0 ) };
};

当我编译(构建)项目时出现错误

System::Drawing::Size 没有合适的默认构造函数可用

代码在h文件中;有人可以帮助我做什么吗?我在 VS 2015 中工作。

您可能想要添加更多信息,例如是什么语言。

我猜这是 c++/cli,您面临的问题可能是典型的 c++ 问题,其中 "Size" 是一种仅由没有正确定义的简单 "struct Size;" 引入的类型。

您引用的 header 中会出现错误,未能包含提供 "Size" 定义的 header,看起来像 "struct Size{ ... }"

您可以通过将另一个 header 文件包含在引用的 header 文件的上方一行来解决您的问题。

在此 C++/CLI 值 class 定义中

public value struct DeviceInfo
{
    Byte    DeviceCompatibility;
    Size    imageSize;

    static initonly DeviceInfo Empty = { (Size::Empty, 0 ) };
};

Size 类型的数据成员 imageSize。并且编译器错误消息说 class.

没有默认构造函数

您必须在 class 定义中显式初始化此数据成员,或者编写 class 构造函数来初始化此数据成员。

根据 Size class 的描述,它有以下构造函数

Size(Int32, Int32)
Size(Point)

如您所见,每个构造函数都需要指定一个或多个参数。

我认为您可以使用相同的静态数据成员 Size::Empty 来初始化数据成员 imageSize

举个例子

    Size    imageSize = Size::Empty;