我将一个指向向量的指针作为函数中的输出参数,我不知道这是否是最佳实践:
Status Interface::method(const std::vector<int>** outVec);
我正在为一个类编写一个 API,其中每个函数都返回一个状态。 为此,我需要通过函数参数返回结果。 我不想使用 std::vector 引用,因为这需要用户提供一个空向量,而不是我创建向量并提供它。 有没有更干净的方法?
显而易见的解决方案是从函数返回向量。
std::pair<Status,std::vector<int>> method();
或
struct MethodResult {
Status status;
std::vector<int> vect;
};
MethodResult method();
或类似的。
您是对的,使用引用输出参数有缺点,但您的解决方案更糟糕。调用者仍然需要提供双指针:
std::vector<int>** p;
method(p);
现在他们面临的问题是当不再需要矢量时如何处理它。是动态分配的吗?如何?为什么?原始指针不应用于拥有资源,也不应用于转移所有权。当
std::vector
已经在为你管理内存并且你可以简单地从函数中返回它时,没有理由打开这个蠕虫罐头。