Problem med at hente værdier fra dynamisk array
Hej eksperterJeg er ikke særlig habil i C++ og er stødt på et problem.
Jeg har forsøgt at lave en Table klasse som på sigt skal kunne udskrive tabeller. Men jeg kan ikke hente (eller måske sætte) værdier til et dynamisk array som jeg har oprettet. Når jeg henter en værdi fra det for jeg kun den seneste satte værdi.
Håber i kan hjælpe
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Table {
private:
int width;
int height;
int currentCol;
int currentRow;
char** currentRowValues;
void resetArray();
void print();
public:
Table(int argwidth, int argheight);
~Table();
void fill(std::string text);
void fill(const char* text);
void fill(char* text);
};
Table::Table (int argwidth, int argheight) {
//Set width og height
width = argwidth;
height = argheight;
//Nulstil og opret et array
currentCol = 0;
currentRow = 0;
currentRowValues = new (nothrow) char*[width];
}
void Table::resetArray () {
//Nulstil og opret et array
delete[] currentRowValues;
currentCol = 0;
currentRowValues = new (nothrow) char*[width];
}
void Table::fill(char* text) {
//Gem text
cout << "Setter: currentRowValues[" << currentCol << "] = \"" << text << "\"; \n";
currentRowValues[currentCol] = text;
//Hvis currentCol er ligmed width: print, nulstil og hæv currentRow
if (currentCol == (width - 1)) {
cout << "\n";
print();
resetArray();
currentRow = currentRow + 1;
}
else {
currentCol = currentCol + 1;
}
}
void Table::print() {
cout << "Udskriver række: " << currentRow << "\n";
for (int i=0; i<width; i++) {
cout << "Getter: currentRowValues[" << i << "] = \"" << currentRowValues[i] << "\"; \n";
}
cout << "\n";
}
//Konventer alle former for input til char*
void Table::fill(std::string text) {
fill((const char*)text.c_str());
}
void Table::fill(const char* text) {
fill((char*)text);
}
//Destructor
Table::~Table() {
delete[] currentRowValues;
}
int main (int argc, char * const argv[]) {
system("clear");
Table table(7, 6);
for (int h=0;h<6;h++) {
cout << "Sender række: " << h << "\n";
for (int w=0;w<7;w++) {
std::stringstream cellcontent;
cellcontent << (w+1) << "x" << (h+1);
table.fill(cellcontent.str());
}
}
return 0;
}