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;
}

显然,我所有的指针和 derefs 要么丢失,要么位于错误的位置......

帮助?

戴夫

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 回答