0

我正在使用一个名为 tArray 的对象,它是一个对象数组,并且可以正常工作以执行所有其他任务。我需要使用对象数组中的buyerName 形成一个字符串数组,以填充我们的新数组,然后返回它。但是我不断收到标题中所述的错误,有人知道为什么吗?到目前为止,我在我的程序中只使用这种方法。谢谢

第一段代码用于调用我的分析器类中的方法

std::string *topBuyers = analyser.topFiveBuyers();
for(int idx = 0; idx < 5; idx++)
    std::cout << "Top buyer" << (idx+1) << ": " << topBuyers[idx] << std::endl;
std::cout << std::endl;
delete [] topBuyers;

代码的下一部分是有问题的方法。

string* Analyser::topFiveBuyers()
{
const int sSize = 5;

string calcString[sSize] = {tArray[0].buyerName, tArray[1].buyerName, 
tArray[2].buyerName, tArray[3].buyerName, tArray[4].buyerName}; 

return calcString;
}
4

1 回答 1

5

您正在返回一个指向临时变量的指针topFiveBuyers

正确的方法是从您的方法返回 a vector<string>orarray<string,5>而不是 a string*

如果出于某种非常奇怪的原因,您绝对必须返回一个指针,您将需要使用new- 分配空间以及随之而来的所有问题,因为被调用者必须在它之后进行清理。您当前正在函数范围内使用自动存储,不能保证在函数返回后仍然可用/可访问,因此您的访问冲突。

于 2013-03-08T20:06:24.380 回答