Prawdopodobnie próbowałeś zrobić składową tak:
string tab[5];
Musisz jednak pamiętać, że składowe są tworzone przy tworzeniu obiektów, a to oznacza, że w konstruktorze próbowałeś zrobić coś takiego:
string tab[5]; //automatyczne tworzenie składowej obiektu
//wchodzimy do konstruktora
//tab2 to przekazany argument, tworzenie jest pewnie w mainie
//a przesylany sam wskaznik, ale dalem tworzenie tutaj, zebys widzial ze to nie ma sensu
string tab2[5] = {...}; //zawartosc
//przypisanie w konstruktorze
tab = tab2;
To oczywiście nie zadziała. Ale wszystko zadziała świetnie gdy użyjemy wskaźnika. Bo wskaźnik po stworzeniu można przypisywać w przeciwieństwie do tablicy. I jak wiadomo tablica to poniekąd wskaźnik na pierwszy element tej tablicy.
#include <string>
#include <iostream>
using namespace std;
class A {
public:
// string tab[] jest rownowazne z string *
A(string * tab, int tabLen) {
this->tab = tab;
this->tabLen = tabLen;
}
void printTab() {
for (size_t i = 0; i < tabLen; i++)
{
cout << tab[i] << endl;
}
}
private:
string * tab;
int tabLen;
};
int main()
{
string test[] = {
"aaaaaaaa",
"bbbbbbbb",
"ccccccccc",
"dddddddd"
};
A a(test, 4);
a.printTab();
return 0;
}