从函数返回变长数组

dav*_*ove 1 c++ arduino

已经在C#-land了一段时间,我无法弄清楚如何在C++中做到这一点(在Arduino草图中)

我想从库中调用一个函数来返回一个未知长度的字节列表.有点像:

byte devices[] = MyLib::EnumerateDevices();
Run Code Online (Sandbox Code Playgroud)

在图书馆:

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;
}
Run Code Online (Sandbox Code Playgroud)

显然,我有所有指针和derefs要么丢失,要么在错误的地方......

救命?

戴夫

小智 6

这是矢量用于:

std::vector<int> func()
{
    std::vector<int> r;
    r.push_back(42);
    r.push_back(1337);
    return r;
}
Run Code Online (Sandbox Code Playgroud)

向量具有size()成员函数,可以准确返回所需内容.

如果你想从向量中指出一个指针,那么写

const int *p = &vec[0];
Run Code Online (Sandbox Code Playgroud)

(显然,int用你专门用于矢量的任何类型替换.)