I want to initialize a File
object which takes a pointer and pointer to pointer as an argument. Is this the correct way of implementing it?
//file.h
class File {
public: File(string * , int, string * * , int);
void clean();
private: string * one;
int size_one; //gives size of one array
string * * two;
int size_two; //gives size of *two array
}
//file.cpp
File::File(string * s1, int i1, string * * s2, int i2) {
int k;
one = new string[i1];
for (k = 0; k < i1; k++) {
one[k] = s1[k];
}
two = new string * [i2];
for (k = 0; k < i2; k++) {
two[k] = s2[k];
}
}
How should I implement the clean()
function which deletes both arrays?
答案 0 :(得分:0)
如果你的意思是s1和s2是“新”指针,你只需要写: one = s1和two = s2,因为字符串数据已经分配并封装在s1和s2指针所包含的地址后面。
如果要克隆s1和s2内容,则一个人的实现是正确的。 如果有两个,则需要指定s2是否是要克隆的指针的指针。所以解决方案可能是:
two = new string*[i2];
for ( int k(0) ; k < i2 ; ++k )
two[k] = s1[k];
或
two = new string*[i2];
for ( int k(0) ; k < i2 ; ++k )
{
two[k] = new string[yourDim];
for ( int l(0) ; l < i2 ; ++l )
two[k][l] = s2[k][l];
}
如果要清理第二种情况,则需要在数组之前清除数组数组。
for ( int k(0) ; k < i2 ; ++k )
delete two[k];
delete two;