我已经挣扎了一段时间了,我终于伸出援手了。我通过readData函数从文本文件中读取数据。在该函数中,我调用ELement类的函数将元素数据读入向量向量。然后我尝试通过writeData函数将数据写入文本文件,这就是我的问题所在。当我编译并运行时,outputfile包含我写入除了Element数据之外的所有其他数据。我还需要能够通过其他功能访问此Element数据。
非常感谢任何帮助,提示或见解。我已经包含了我认为的相关代码。如果需要更多,请告诉我。
谢谢!
readData功能:
void readData::readdata(ifstream &inp)
{
Element r;
r.addelementdata(inp);
};
addelementdata功能:
void Element::addelementdata(istream& inp)
{
int i,j,tmp;
for (i = 0; i < d_numElems; i++)
{
vector<int>row;
for (j = 0; j < 10; j++)
{
inp >> tmp;
row.push_back(tmp);
}
elems_matrix.push_back(row);
}
}
输出矩阵内容功能:
void Element::Elems_matrix_contents(ofstream& out)
{
int i, j;
for (i = 0; i < d_numElems; i++)
{
for (j = 0; j < 10; j++)
{
out << elems_matrix[i][j] << '\t';
}
}
}
元素类:
class Element: public readData
{
protected:
std::vector< std::vector<int> > elems_matrix;
public:
// Constructors
Element();
//Destructor
~Element(){};
// Functions
void addelementdata(istream&inp);
std::vector<std::vector < int >> elems_matrix_copy;
void Elems_matrix_contents(ofstream& out);
};
readData类:
class readData
{
public:
readData();
~readData(){};
void readdata(ifstream &inp);
void writedata(ofstream &out);
};
writeData函数:
void readData::writedata(ofstream &out)
{
out << "ELEMENT " << "Material " << "Nodes: "<< endl;
Element r;
r.Elems_matrix_contents(out);
out << "*******************************************************************" << endl << endl;
};
答案 0 :(得分:0)
问题是你创建了一个Element
类型的局部变量并将数据读入其中。因为它是本地的,所以在函数结束时会被销毁:
void readData::readdata(ifstream &inp)
{
Element r; // this will die at end of function
r.addelementdata(inp);
};
与您的writedata()
功能相同。您创建一个全新的(空)Element
并输出:
void readData::writedata(ofstream &out)
{
out << "ELEMENT " << "Material " << "Nodes: "<< endl;
Element r; // completely new contains nothing
r.Elems_matrix_contents(out);
out << "********************************************" << endl << endl;
};
也许您应该让Element r
成为班级readData
的成员?
class readData
{
Element r; // now all functions can use the same Element
// ... blah blah blah
};