我是一个新手,所以在这里一些帮助将非常感激。我有一个名为Device的类,它获取设备屏幕大小:
int Device::GetDisplay()
{
DisplayInfo display;
int displayArray [2];
displayArray[0] = display.pixelSize().width();
displayHeight[1] = display.pixelSize().height();
return displayArray;
}
它返回一个数组,有没有更好的方法来返回数据?
还有更好的方法来调用该类,它目前通过以下方式调用:
Device *device = new Device();
device.GetDisplay();
我可以在不使用设备*device = new Device();
谢谢!
答案 0 :(得分:3)
我可以在不使用Device * device = new Device();
的情况下调用它
是的,您可以在automatic storage上实例化它:
Device device;
如果确实需要,您应该只使用动态分配。从你的例子中可以看出你根本不需要它。
至于问题的其余部分,有太多错误可以使蚂蚁感觉不到它。但是你可以返回一个包含你想要的两条信息的简单类:
struct DisplayDimensions
{
int height;
int width;
};
DisplayDimensions Device::GetDisplay()
{
DisplayInfo display;
DisplayDimensions d;
d.width = display.pixelSize().width();
d.height = display.pixelSize().height();
return d;
}
答案 1 :(得分:0)
您的返回值(int
)与函数(int[2]
)返回的值不匹配,您应该使用std::array
或std::pair
或类似的东西
由于您的功能永远不会使用this
,因此您可以使用static
进行调用,然后您可以使用Device::GetDisplay()
在没有该类实例的情况下调用它。
您应首先将您的功能标记为static
:
static std::pair<int, int> GetDisplay() {
DisplayInfo display;
return std::make_pair(display.pixelSize().width(), display.pixelSize().height());
}
然后您可以使用Display::GetDisplay()