【发布时间】:2020-05-13 08:16:51
【问题描述】:
我有一个模板类,其中我有一个函数,它应该读取文本文件的内容并创建一个对象,该对象被推入一个自己实现的向量类。我可以编译代码,但我收到一个关于向量中第 0 个元素的非常大的数字的错误。 (这是为错误处理提供的脚本生成的错误,不是任何 c++ 编译器错误。)
代码如下所示:
bool FileReading(const std::string &nameOfFile)
{
std::ifstream readFileObj(nameOfFile);
if (readFileObj.is_open())
{
T input;
readFileObj >> input;
PushBack(input);
readFileObj.close();
return true;
}
return false;
}
变量T input是一个模板变量,函数PushBack是一个将对象推入向量的函数。 (不是 std push_back 函数)
我是否遗漏了一些明显的东西?关于流如何工作的一些基本知识?
这是我的 PushBack 函数:
void PushBack(const T &element)
{
if (currentElementCount == maximumCapacity)
{
T *tempArray = new T[maximumCapacity * 2];
for (unsigned int i = 0; i < maximumCapacity; ++i)
tempArray[i] = normalArray[i];
delete[] normalArray;
maximumCapacity *= 2;
normalArray = tempArray;
}
normalArray[currentElementCount] = element;
currentElementCount += 1;
}
【问题讨论】:
-
听起来问题可能与向量有关,因此您应该展示
PushBack的实现和/或操作向量的代码。 -
更新了@TheUndeadFish
标签: c++ templates stream stringstream