-4

私は少し初心者なので、ここで助けていただければ幸いです。デバイスの画面サイズを取得する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();

ありがとう!

4

2 に答える 2

3

Device * device = new Device();を使用せずに呼び出すことはできますか?

はい、自動ストレージでインスタンス化できます:

Device device;

動的割り当ては、本当に必要な場合にのみ使用してください。あなたの例から、あなたがそれを必要としていることはまったく明らかではありません。

残りの質問については、エラーが多すぎて理解できません。ただし、必要な2つの情報を保持する単純なクラスを返すことができます。

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;
}
于 2012-10-28T17:52:31.637 に答える
0

戻り値( )がfunction( )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()

于 2012-10-28T17:52:15.340 に答える