0

初心者の質問です。以下のコードを参照してください。

FB::variant TestPluginAPI::getmidX()
{
RECT rect; 
HWND hWnd;
hWnd = getBrowserHwnd();
if(GetWindowRect(hWnd, &rect))
    {

  int width = rect.right - rect.left;
  int height = rect.bottom - rect.top;
  int left = rect.left;
  int mid = (rect.right + rect.left)/2;
  return mid;
    }
else {return 0;}
}   

私が望むのは、この関数から取得できることmid、たとえばleft、別の関数のさまざまな変数で使用できることです。もちろん、それをコピーして、返すだけの関数を作成することもできますleft...そのようなことを行う適切な方法ですか、それとももっとエレガントな方法がありますか?

4

3 に答える 3

2

より多くのものを返したい場合は、構造体を定義し、関数から構造体を返すことができます。例えば:

struct funcRetrun
{
  int left;
  int mid;
  int right;
}

その後、関数内でこれらのものを返すことができますが、関数の戻り値の型を funcReturn に変更する必要があるため、これはあまりエレガントではありません。

C++11 以降、std::tupleより多くを返したい場合に使用できます。

Tuples are objects that pack elements of -possibly- different types together in a single object, just like pair objects do for pairs of elements, but generalized for any number of elements.

于 2013-03-31T21:58:09.713 に答える