最初に、低レベルのものを実行するまで、ダイナミックアレイを直接使用しないでください。標準的なライブラリが美しい容器でいっぱいです。それらを最大限に活用するようにしてください。
私の推測が正しければ、あなたのようなものがあります。これはだった場合
class FileIO{
public:
double** MatrixA;
double** MatrixB;
double** MatrixC;
void createMatrix(int rows, int cols, double** FileIO::* member_varaible){
this->*member_varaible= new double*[rows];
for (int i = 0; i < rows; i++){
(this->*member_varaible)[i] = new double[cols];
}
}
};
int main(){
FileIO fio;
fio.createMatrix(5,5,&FileIO::MatrixA);
fio.createMatrix(2,4,&FileIO::MatrixB);
fio.createMatrix(4,3,&FileIO::MatrixC);
}
:
class FileIO{
.....
double** MatrixA;
double** MatrixB;
double** MatrixC;
}
void FileIO::createMatrix(int rows, int cols){
name = new double*[rows];
for (int i = 0; i < rows; i++){
name[i] = new double[cols];
}
}
をあなたはメンバ変数の型へのポインタと呼ばれるもので、あなたの問題を解決することができます私はあなたが悪いデザインをしていると思うし、あなたはそれを変更することを考える必要があるかもしれません。
代替、より現実的な解決策: `
namespace my_utility{
template <typename T>
T** create_2d_dynamic_array(int rows, int cols){
T** temp = new T*[rows];
for (size_t i = 0; i < rows; i++){
temp[i] = new T[cols];
}
return result;
}
}
int main(){
auto foo = my_utility::create_2d_dynamic_array<double>(5,5);
}
' FOO =新しいダブル* [行]?実際の名前_はどういう意味ですか? – ForceBru
実際には、行列をダブルポインタとして保存しないでください。 'std :: map>'を使うことができ、 'string'部分が名前になり、' vector'が行列をフラットな配列にする。 –
NathanOliver
名前で、あなたはコードを読んでいる人が参照する名前を意味しますか? –