从我的教授那里得到了一个用C ++编写的程序,并被要求将结构更改为一个类,私有化int **数据,然后添加getter和setter。但是,我之前从未使用过双指针,也不知道如何进行操作。我所做的只是修改Triangle头文件,但是我什至不知道我是否正确地做到了。帮助将不胜感激!
// Triangle.h
#ifndef TRIANGLE_H
#define TRIANGLE_H
class Trngl{
private:
int **data;
public:
int size;
void setData(int **d){**data = **d;};
int getData(){return **data;};
};
#endif /* TRIANGLE_H */
// main.cpp
//System Libraries Here
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
//User Libraries Here
#include "Triangle.h"
//Global Constants Only, No Global Variables
//Like PI, e, Gravity, or conversions
//Function Prototypes Here
Trngl *fillStr(int);
void prntStr(Trngl *);
void destroy(Trngl *);
//Program Execution Begins Here
int main(int argc, char** argv) {
//Set the random number seed
srand(static_cast<unsigned int>(time(0)));
//Declare all Variables Here
int row=10;
//Input or initialize values Here
Trngl *triangle=fillStr(row);
//Output Located Here
prntStr(triangle);
//Return Memory
destroy(triangle);
//Exit
return 0;
}
void destroy(Trngl *tri){
for(int row=0;row<tri->size;row++){
delete []tri->data[row];
}
delete []tri->data;
delete tri;
}
void prntStr(Trngl *tri){
cout<<endl;
for(int row=0;row<tri->size;row++){
for(int col=0;col<row;col++){
cout<<tri->data[row][col]<<" ";
}
cout<<endl;
}
cout<<endl;
}
Trngl *fillStr(int n){
//Allocate a structure to hold the Matrix
Trngl *tri=new Trngl;
//Create the 2-D allocated pointer
tri->data=new int*[n];
for(int row=0;row<n;row++){
tri->data[row]=new int[row+1];
}
tri->size=n;
//Fill the array with values
for(int row=0;row<n;row++){
for(int col=0;col<row;col++){
tri->data[row][col]=rand()%90+10;
}
}
//return the Array pointer
return tri;
}
答案 0 :(得分:0)
**数据并不复杂,请考虑三角形的外观: 00 10 11 20 21 22
因此,您有许多数组或*行,但是如何存储它们呢? 数组对此很有用,数组的类型是什么?它是一个数组数组,或者作为一个数组是一个指针,它是指针的指针。 如果您不想编写它,或者有点令人困惑,则可以使用typedef并将其用作普通变量。
您可以编写一个真实的构造函数:Triangle(** d)并作为析构函数〜Triangle()来代替集合 如上所述:小心使用析构函数,您要删除每个指针,而不仅仅是外部指针。
然后:将属于该类的原型放在标题中