C++ 调用类并返回数据?

C++ 调用类并返回数据?,c++,C++,我是一个新手,所以这里的一些帮助将不胜感激。我有一个名为Device的类,它获取设备屏幕大小: int Device::GetDisplay() { DisplayInfo display; int displayArray [2]; displayArray[0] = display.pixelSize().width(); displayHeight[1] = display.pixelSize().height(); return displayArray; } 它返回一个数

我是一个新手,所以这里的一些帮助将不胜感激。我有一个名为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调用它吗
*Device=new Device()

谢谢

您的返回值(
int
)与函数返回的值不匹配(
int[2]
),您应该使用
std::array
std::pair
或类似的方法

由于您的函数从不使用
this
,因此可以将其设置为
静态
,然后可以使用
Device::GetDisplay()
在没有类实例的情况下调用它

您应该首先将函数标记为
静态

static std::pair<int, int> GetDisplay() {
    DisplayInfo display;
    return std::make_pair(display.pixelSize().width(), display.pixelSize().height());
}
static std::pair GetDisplay(){
显示信息显示;
返回std::make_pair(display.pixelSize().width(),display.pixelSize().height());
}
然后可以使用
Display::GetDisplay()

我可以不用Device*Device=new 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:那是如何编译的?即便代码是远程有效的,也不能在C++中“返回数组”。@ ListNeasraceSeRealSoope<代码> STD::代码>嗯,够近了。什么是
显示高度
?它不是真正的代码。真正的代码是编译的。你发布了假代码。发布真实代码。谢谢,我怎样才能使它静态?使什么静态?方法?是的,因此我可以在没有实例的情况下使用它;但是我得到了一个错误:对'Device::GetDisplay()'的未定义引用有什么想法吗?
std::pair
在这里都是错误的。我们这里有一个
struct
,包含成员名称
width
height
。使用
std::pair
时,您需要将它们命名为
第一个
第二个
,因为它们缺少很多。它实际上并不比
int[2]
好多少。谢谢,我应该在头文件中放些什么,这样我就可以从另一个类访问GetDisplay了?它应该返回什么类型?@user1013512
GetDisplay
返回一个
DisplayDimensions
,因此您应该将它放在它自己的头中,或者将声明/定义分别放在
设备的任何位置。@user1013512他在回答中就在那里显示了返回类型。听起来你可能想做一些C++教程,或者学习一些基本的东西。
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;
}