调用一个类并返回数据?

时间:2012-10-28 17:49:51

标签: c++

我是一个新手,所以在这里一些帮助将非常感激。我有一个名为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();

的情况下调用它

谢谢!

2 个答案:

答案 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::arraystd::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()