Logg logg; return logg.getResult(Vlog); } string* Logg:: getResult(const vector<Logg::LogContent>& Vlog) { string* result = new string[3]; if (Vlog.size() == 3) { string st = Vlog[0].starttime; string le = Vlog[1].loglevel; string fl = Vlog[2].file; result[0] = st; result[1] = le; result[2] = fl; } return result; }
时间: 2024-04-17 20:26:01 浏览: 187
在你的代码中,你创建了一个 `Logg` 对象 `logg`,然后调用了 `getResult` 函数来获取结果,并直接返回结果。
然而,返回一个指向动态分配的内存的指针是不安全的,因为在函数返回后,调用者将无法访问到这块内存。为了避免此类问题,你可以将结果存储在一个容器中,并将容器作为返回值。
下面是修改后的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <string>
std::vector<std::string> getResult(const std::vector<LogContent>& Vlog) {
std::vector<std::string> result;
if (Vlog.size() == 3) {
std::string st = Vlog[0].starttime;
std::string le = Vlog[1].loglevel;
std::string fl = Vlog[2].file;
result.push_back(st);
result.push_back(le);
result.push_back(fl);
}
return result;
}
int main() {
std::vector<LogContent> Vlog; // 假设这是你的日志内容向量
// 假设填充了 Vlog 向量
Logg logg;
std::vector<std::string> result = logg.getResult(Vlog);
// 使用 result 容器
return 0;
}
```
在上面的代码中,`getResult` 函数使用一个 `std::vector<std::string>` 容器来存储结果,并返回该容器。在 `main` 函数中,你可以使用 `result` 容器来访问结果。
请注意,使用容器可以更安全地管理动态分配的内存,避免了手动分配和释放内存的麻烦。此外,将结果存储在容器中还提供了更灵活的操作方式。
阅读全文