gpt4 book ai didi

c++ - 正确取消对指针的引用迭代器

转载 作者:行者123 更新时间:2023-11-30 04:23:27 25 4
gpt4 key购买 nike

我有一个指向对象的指针 vector 。每个对象都存储一个值并具有一个 toString() 函数,该函数将该值作为字符串返回。我有一个遍历 vector 的迭代器,我需要通过调用 toString() 来提取每个对象的值。问题是,我不知道如何获取该值。

此函数最终应该将数字写入文件,但我正在使用 cout 进行测试。

    void writeNumbers(vector<Integer*>& input)
{
ofstream write;
write.open("Integers.txt");
vector<Integer*>::iterator iter = input.begin();
for (iter; iter < input.end(); iter++)
{
**std::cout << (*iter)->toString() << std::endl;**
}
write.close();

I get an Access Violation error which points me to the toString() function:

std::string Integer::toString()
{
std::stringstream ss;
ss << *(this)->value;
return ss.str();
}

toString() works fine whenever I don't try to access it through the iterator.

编辑:toString 中的值实际上是一个指向数字的指针。

Edit2:新的 writeNumbers:

void writeNumbers(vector<Integer*>& input)
{
ofstream write;
write.open("Integers.txt");
vector<Integer*>::iterator iter = input.begin();
for (iter; iter != input.end(); iter++)
{
std::cout << (*iter)->toString() << std::endl;
}
write.close();
}

最终编辑:好吧,问题原来是一个笨拙的构造函数,它未能正确初始化一个指针,所以我对问题的实际位置有很大的了解。 :)

Integer::Integer(string input)
{
if(isNaN(input))
value = new int(atoi(input.c_str()));
}

所以它应该是 !isNaN,另外我修复了在错误输入时初始化它的问题:

//New constructor, works 100%
Integer::Integer(string input)
{
if(!isNaN(input))
value = new int(atoi(input.c_str()));
else
value = new int(0);
}

最佳答案

您的 toSting() 有问题。改变

ss <<*(this)->value;

ss << value;

关于c++ - 正确取消对指针的引用迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com