2016-11-17 26 views
-3

我有一个API,我努力工作,在以下几行:我有一个错误;在.h文件没有默认构造函数,我怎么设置有效的构造

public value struct DeviceInfo 
{ 
    Byte DeviceCompatibility; 
    Size imageSize; 

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

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

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

的代码是啊文件中;有人可以帮助我应该做什么;我正在VS 2015中工作。

+0

我认为我们这里需要更多的信息,能够帮助您。你可以从添加你正在使用的API开始,也许你如何调用这个代码,更多的上下文 – jimmy

回答

0

您可能想要添加更多信息,如是什么语言。我猜这是C++/cli,你面临的问题可能是一个典型的C++问题,其中“Size”是只由一个简单的“struct Size;”引入的类型。没有适当的定义。

这将是你报的报头中的错误,未能包括提供的“尺寸”的定义的头,它看起来像“结构尺寸{...}”

你也许能够通过将其他头文件包含在引用头文件的上方一行来解决您的问题。

+0

“你可能想添加更多的信息,比如说什么语言。”? – George

+0

是的,有一个标签C++/cli,但我不认为它在那里。 – Ingo

+0

另外我认为我的回答是错误的。弗拉德是对的。 – Ingo

0

在该C/CLI值类定义

public value struct DeviceInfo 
{ 
    Byte DeviceCompatibility; 
    Size imageSize; 

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

Size类型的数据成员imageSize。编译器错误信息说这个类没有默认的构造函数。

要么必须在类定义中显式初始化此数据成员,要么编写将初始化此数据成员的类构造函数。

按照Size类说明它具有以下构造

Size(Int32, Int32) 
Size(Point) 

正如你可以看到每个构造函数需要指定一个论点或论据。

我想你可以使用相同的静态数据成员Size::Empty初始化数据成员imageSize

尝试例如

Size imageSize = Size::Empty; 
相关问题