1

しばらくの間C#ランドにいましたが、C ++でこれを行う方法がわかりません(Arduinoスケッチで)

長さが不明なバイトのリストを返すライブラリから関数を呼び出したいと思います。このような並べ替え:

byte devices[] = MyLib::EnumerateDevices();

そして図書館で:

byte[] MyLib::EnumerateDevices()
{       
   int count = 0;       

   //some code that modifies count

   static byte *temp = new byte[count];  // Assume count is 2 here

   temp[0] = 42;
   temp[1] = 44;       

   return temp;
}

明らかに、私はすべてのポインタと参照解除を欠落しているか、間違った場所に持っています...

ヘルプ?

デイブ

4

2 に答える 2

7

これがベクトルの目的です。

std::vector<int> func()
{
    std::vector<int> r;
    r.push_back(42);
    r.push_back(1337);
    return r;
}

ベクトルには、size()必要なものを正確に返すメンバー関数があります。

ベクトルからポインターが必要な場合は、次のように記述します

const int *p = &vec[0];

(明らかに、intベクトルを特殊化した型に置き換えてください。)

于 2013-07-24T14:39:33.730 に答える
2

C または C++ で配列を返すことはできません。ポインターを返すこともできますが、この場合はサイズも返す必要があります。代わりに使用std::vector<int>すると、はるかに簡単になります。

于 2013-07-24T14:40:36.367 に答える