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