我有一个C ++应用程序(我们称之为“客户端”),它广泛使用双指针在其函数和几个dll之间存储和传递数组。
我需要将它与C ++库集成,而不是将函数参数公开为std :: vector。 我很清楚,“最干净”的答案是重写客户端以用向量替换指针,但目前这不是一个选项。
例如,这是库提供的功能之一:
EXPORT void* swt(vector<double> &, int , string , vector<double> &, int &);
这是我需要作为第一个参数传递给上面函数的双指针之一:
double* TSF_MAD = (double*)malloc(DatasetsCount*sizeof(double));
我已经尝试了以下两种方法,但都引发了同样的错误(C2664):
swt(TS, TSLen, "Test", TS, d);
swt(&TS[0], TSLen, "Test", &TS[0], d);
感谢任何帮助
答案 0 :(得分:1)
您不能将指针传递给需要向量的函数。你需要传递一个向量。如果你有一个指向对象数组的指针,那么你可以将数据复制到一个向量中,然后将该向量传递给该函数。
tril
通过接受模板化迭代器可以更好地实现库,这样就可以使用任何数据结构,例如原始数组,向量或集合。就像标准库中的算法一样。它还允许在向量内传递部分范围,而不是整个容器。如果你可以修改库,那么我建议你这样做。