Witam!
Jestem w trakcie implementowania pewnego algorytmu matematycznego w języku C++, wybrałem jako IDE środowisko QT Creator. Najwięcej problemów sprawia mi jednak programowanie obiektowe, bo przede wszystkim miałem jednak do czynienia z językiem Visual Basic, w którym to żadnych klas nie tworzyłem. No a tutaj jeszcze trochę sprawa się komplikuje, bo klasy w QT są trochę inne, niż w "zwykłym" C++. Stąd też byłbym wdzięczny za jakieś wskazówki, w miarę jak będę kodował i będą się pojawiać pewne niejasności czy problemy, których nie uda mi się rozwiązać.
Otóż do nowoutworzonego projektu dodałem przy pomocy kreatora klasę, a dokładniej to jej dwa pliki, mydata.h i mydata.cpp. Ta klasa ma przechowywać dane matematyczne w postaci macierzy i paru innych zmiennych, a także metody (funkcje) wykonywane na danych. Natomiast w pliku mainwindow.cpp znajduje się funkcja on_pushButton_clicked, odpowiedzialna za wywołanie funkcji zwracającej zmienną plikową, później konstruktora klasy myData (przekazując mu tą zmienną plikową), a następnie akcesorów tej klasy.
- Potrzebuję stworzyć dwuwymiarową tablicę elementów typu integer w dynamiczny sposób, tzn. nie znając z góry rozmiarów tablicy. Jest ona wymiarów n x n, gdzie n jest pobierane z pliku. Pomyślałem, że można to zrealizować przy pomocy QList. Niestety, w pomocy (http://doc.qt.nokia.com/latest/qlist.html) nie widzę żadnej informacji, jak później operować na czymś w rodzaju:
QList<QList<int> > myMatrix;
a dokładniej: przypisać element[x][y]; później go przeczytać; zniszczyć na końcu myMatrix, jak nie będzie potrzebne.
- Jeśli wykonam kod (w pliku mainwindow.cpp)
void MainWindow::on_pushButton_clicked()
{
ui->labelTmp->setText("tekst");
to wszystko jest w porządku. Natomiast ten sam kod w domyślnym konstruktorze klasy, w pliku myData.cpp powoduje błąd:
In constructor 'myData::myData(QWidget*)':
'ui' was not declared in this scope
D:\Qt\2010.05\tmp01-build-desktop..\tmp01\mydata.cpp
Nie wiem, jak zadeklarować 'ui', albo może raczej, jak poinformować kod, że 'ui' zostało zadeklarowane w odpowiednim miejscu.
Pozdrawiam!