So i am basically almost done with my C++ App Logic Wise tho the only thing i struggle with and wanna figure it is how to include a seperate class into my main class constructors >.>

Mostly due to the fact that currently in my Code my main Code has 2 Objects tho ErrorWin Object is right now the only one that exist twice as seperate Objects which itd like to fix >.>

So this is my first Object in my Main Function which just calls my DisplayWindow Function while my ErrorWin Object calls the Display Error Window Function :P

int main() {
  ErrorWindow ErrorWin;
  MainWindow MainWin;

  if (ProgramPath.empty()) {
    ErrorWin.DisplayErrorWindow();
    return Fl::run();
  }

  MainWin.DisplayMainWindow();
  return Fl::run();
}

Now the Main Issue is that only my First Text basically gets displayed in the Error Window even tho my switch Statement is set to display a different error text basically according to my callback but that obviously does not work due to theyre being seperate ErrorWin Objects :(

void MainWindow::CallbackSaveFile(Fl_Widget* Widget, void* Data) {
  MainWindow* MainWindowData = static_cast<MainWindow*>(Data);
  ErrorWindow ErrorWin;

  if (!MainWindowData->InputFile.empty()) {
    ...
  } else {
    ErrorWin.DisplayErrorWindow();
  }
}
  • Oka ( Oka@sopuli.xyz ) 
    link
    fedilink
    arrow-up
    2
    ·
    6 months ago

    Initialize ErrorWin as a pointer. Instantiate it in main (or at initialization).

    Remember to delete the data in the destructor.

    • Retro-Hax ( RetroHax@feddit.org ) OP
      link
      fedilink
      arrow-up
      1
      ·
      6 months ago

      huh? O.o
      so you mean like this for Example? >.>

      int main() {
        ErrorWindow* ErrorWin;
        MainWindow MainWin(&ErrorWin);
      

      and then inside mainwindow source files like this? O.o

      class MainWindow {
        public:
          MainWindow(ErrorWindow* ErrorWin);
        private:
          ErrorWindow* ErrWin;
      
      MainWindow::MainWindow(ErrorWindow* ErrorWin) : ErrWin(ErrorWin) {
      

      because all i recieve is this error even tho i included errorwindow.hpp inside mainwindow.hpp and cpp file >.>

      In file included from src/gui/errorwindow.hpp:20,
                       from src/main.cpp:13:
      src/gui/mainwindow.hpp:56:27: error: expected ‘)’ before ‘*’ token
         56 |     MainWindow(ErrorWindow* ErrorWin);
            |               ~           ^
            |                           )
      src/gui/mainwindow.hpp:83:5: error: ‘ErrorWindow’ does not name a type
         83 |     ErrorWindow* ErrWin;
            |     ^~~~~~~~~~~
      make: *** [Linux.mk:39: build/main.o] Error 1