Przepisanie z kolejki do obiektu

0

Witam,

#include <cstdlib>
#include <iostream>
#include <string>
#include <queue>

using namespace std;

class Huff{
    public:
        int ile;        // licznik wystąpień
        char co;      // zmiena przecowywujaca znak
        Huff* left;     // lewy syn
        Huff* right;    // prawy syn
        
    public:
        Huff(){};
        Huff(int i, char j){
            this->ile = i;
            this->co = j;
            this->left = NULL;
            this->right = NULL;
        }
        
      friend bool operator<(const Huff& x, const Huff& y) {
         if(x.ile > y.ile) 
            return true;
         else
            return false;
      }
      
      Huff& operator=(Huff& y) {
         this->co = y.co;
         this->ile = y.ile;
         this->left = y.left;
         this->right = y.right;
         return *this;
      }

};
        
             
int main(){
    
// ----- * Zliczanie znaków w pliku text.txt * -----
    int ASCII[128] = {0};             // Tablica używana przy zliczania znaków
    FILE *plik;
    char znak;
    int pom;
    plik = fopen("text.txt","r");
    if(plik == NULL){
          cout << "Brak pliku text.txt! \a" << endl << endl;
    }else{      
          cout << "Wczytany tekst:" << endl;
          while (!feof(plik)){
                fscanf(plik,"%c",&znak);
                printf("%c",znak);
                pom = (int)znak;
                ASCII[pom]+=1;
                };
          cout << endl << endl;
    };      
    fclose(plik);

// ----- * Wypełnianie kolejki prioretytowej * -----
    priority_queue<Huff> PQ;                  // Deklaracja kolejki
    for(int i=0; i<128; i++){
        if(ASCII[i]!=0) PQ.push(Huff(ASCII[i], (char)i));
    };

// ----- * Budowa drzewa kodowego Huffmana * -----
    Huff pomo, *Root;
    while(!PQ.empty()){
        pomo.left = PQ.top();
        PQ.pop();
        pomo.right = PQ.top();
        PQ.pop();
        pomo.ile = pomo.left.ile + pomo.right.ile;
        PQ.push(pomo);   
    };
    system("PAUSE");
    return EXIT_SUCCESS;
} // main

Moje problemy zaczynają się przy budowie drzewa. Szczerze to już nie mam pomysłu o co chodzi. Wstawiłem taką wersję jaka mi się wydaje najbliżej poprawnej.
Oto błędy jakie mi produkuje:

In function `int main()': 
73  cannot convert `const Huff' to `Huff*' in assignment 
75  cannot convert `const Huff' to `Huff*' in assignment 
77  `ile' has not been declared 
77  request for member of non-aggregate type before '+' token 
77  `ile' has not been declared 
77  request for member of non-aggregate type before ';' token 

Możecie mi wyjaśnić co tu jest nie tak? z góry dziękuję :)

0

Do left i do right w 77 odwoluj sie za pomoca ->, nie .

0
Macron napisał(a)

Do left i do right w 77 odwoluj sie za pomoca ->, nie .

wtedy Dev C++ mi odpowiada:
base operand of ->' has non-pointer type Huff'

0
pomo.ile = pomo.left->ile + pomo.right->ile; 

To eleminuje 2 błędy!

0
Macron napisał(a)
pomo.ile = pomo.left->ile + pomo.right->ile; 

To eleminuje 2 błędy!

Faktycznie, mój błąd, przepraszam.
Ale to i tak nie zmienia faktu że dalej nie działa :(

0

left jest typu Huff*, a top zwraca const Huff& !

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