Dziwne liczby (konstruktory, klasy)

0

Zmienna w klasy ma dziwne liczby zamiast tych który wydaje mi się, że powinny zostać przypisane w konstruktorze.

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <windows.h>
#include <baza.cpp>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Baza BazaGry;
    ui->label->setText(QString::number(BazaGry.plansze[0][0][6]));
}
 

baza.cpp (ten algorytm działa w codeblocks, ale tutaj w QT już coś jest nie tak)

#include "baza.h"
#include <fstream>
#include <stdlib.h>
using namespace std;
Baza::Baza()
{
    ifstream odczyt;
    odczyt.open("baza.txt");
    string linia;
    string wartosc="";
    int ktory;
    for(int i=0;i<134;i++) {
        getline(odczyt,linia);
        ktory=0;
        if((i+1)%9==0) continue;
        for(unsigned int j=0;j<linia.length();j++) {
            if(((linia[j]>=48) && (linia[j]<=57)) || (linia[j]==45)) wartosc+=linia[j];
            else {
                plansze[i/9][i%9][ktory]=atof(wartosc.c_str());
                wartosc="";
                ktory++;
            }
        }
        if(wartosc!="") plansze[i/9][i%9][7]=atof(wartosc.c_str());
    }
}
...
 

baza.h

#ifndef BAZA_H
#define BAZA_H

class Baza
{
public:
    Baza();
    int plansze[15][8][8];
};

#endif // BAZA_H
 

baza.txt

 
0 0 0 4 4 4 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 2 3 0 0 0

0 0 0 4 4 4 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 2 3 0 0 0

...
0

Program się zachowuje jakby nie było pliku, ale jest w folderze z plikami i dodany do resourców

0

Używam QT Creator

0

Plik tekstowy dodałem w ten sam sposób i w tym samym miejscu co plik obrazkowy który normalnie działa. Odpalić program mogę tylko z poziomu qtc, bo jak próbuje opublikować projekt to dostaję info, że publikacja nie jest możliwa

0
Baza::Baza()
  {
   ifstream fin("baza.txt");
   if(!fin) cerr<<"Brak pliku baza.txt może nazwales go baza.txt.cpp lub baza.txt.txt poniewaz postanowiles utrudnic sobie zycie i schowac nazwy znanych rozszerzen w ustawieniach windows"<<endl;
   int *tb=&plansze[0][0][0];
   for(int i=0;i<sizeof(plansze)/sizeof(int);++i) fin>>tb[i];
  }
0

Nie mam pojęcia jak to powinno działać, ale wyskakuje błąd kompilacji:
błąd:no match for 'operator>>' in 'fin >> ((Baza*)this)->Baza::plansze[i]'

0

Kompiluje się, ale cały czas jest to samo. Na pewno musi być coś z tym plikiem, bo już próbowałem na wszystkie sposoby: do pliku nie ma dostępu z klasy, ani z maina, ścieżki wpisywałem różne ":baza.txt", "baza.txt", ":pliki/baza.txt", ale cały czas to samo.

0

Funkcja odczyt.is_open() zwraca false cały czas. Podałem ścieżkę bezwzględną, ale nic to nie zmieniło.

0

Wczytałem tym kodem i już działa:

 
    QFile inputFile(":/input.txt");
    if (inputFile.open(QIODevice::ReadOnly))
    {
       QTextStream in(&inputFile);
       while ( !in.atEnd() )
       {
          QString line = in.readLine();
          ...
       }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1