i从教授中给出了C 的程序,并被要求将结构更改为类,将int **数据私有化,然后添加getters and setters。但是,我以前从未使用过双重指针,也不知道如何进行。我所做的就是修改三角标头文件,但我什至不知道我是否正确地执行此操作。帮助您将不胜感激!
//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;
}
**数据并不那么复杂,请考虑三角形的样子:0010 1120 21 22
因此,您有许多数组或 *行,但是如何存储它们?阵列对此很棒,阵列的类型是什么?它是一系列数组或作为数组是指针指针的指针。如果您不想写它,或者有点混乱,则可以使用Typedef并将其用作普通变量。
而不是集合,您可以编写一个真实的构造函数:三角形(** d)和destructor〜triangle()如上所述:请谨慎使用灾难,您想删除每个指针,而不仅仅是外部指针。
和:将属于类的原型放在标题中