• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Brak dostępu do sekcji private klasy

Object Storage Arubacloud
0 głosów
302 wizyt
pytanie zadane 26 marca 2021 w C i C++ przez kacper1445 Gaduła (4,880 p.)

Witam, mam klasę Matrix

class Matrix {
private:

    friend istream& operator >> (istream& _in_stream, const Matrix& _matrix);
    friend ostream& operator << (ostream& _out_stream, const Matrix& _matrix);

    //friend Matrix operator + (Matrix& _matrix_l, Matrix& _matrix_r);
    Matrix& operator = (const Matrix& _matrix_r);
    

    friend bool operator == (const Matrix& _matrix_l, const Matrix& _matrix_r);
    friend bool operator != (const Matrix& _matrix_l, const Matrix& _matrix_r);


    unsigned int x, y;
    float** tab;


public:
    Matrix(unsigned int new_x, unsigned int new_y) {
        this->x = new_x;
        this->y = new_y;
        this->tab = new float* [this->y];

        for (int i = 0; i < this->y; i++) {
            this->tab[i] = new float[this->x];
        }
    }

    ~Matrix() {
        for (int i = 0; i < this->x; i++) {
            delete[] this->tab[i];
        }

        delete[] tab;
    }
};

oraz przeciążony operator przypisania

Matrix& Matrix::operator = (const Matrix& _matrix_r) {
    for (int i = 0; i < y; i++) {
        for (int k = 0; k < x; k++) {
            tab[i][k] = _matrix_r.tab[i][k];
        }
    }

    return *this;
}

Niestety przy próbie odpalenia programu pojawia mi się taki oto komunikat:

Przy próbie dodania "friend" wywala poniższy błąd:

Ktoś ma pomysł dlaczego tak się dzieje? Napisałem wszystko identycznie jak było podane na jednej ze stron (Nie wiem czy mogę według regulaminu dodać link do niej).

1
komentarz 26 marca 2021 przez tkz Nałogowiec (42,000 p.)
Może dlatego, że operator przypisania jest prywatny? Tworząc operatory z reguły chcesz, by były publiczne.
komentarz 26 marca 2021 przez kacper1445 Gaduła (4,880 p.)
Okej działa tylko dlaczego nie mogłem tak jak w poprzednich operatorach dodać tego przeciążenia jako zaprzyjaźnioną funkcję?
komentarz 26 marca 2021 przez NewEraOfPeace Gaduła (4,790 p.)

Przecież kompilator Ci ładnie napisał: "element "operator=" musi być funkcją składową"

komentarz 27 marca 2021 przez Oscar Nałogowiec (29,320 p.)

Odpowiem jak administrator smiley U mnie się kompiluje. W gcc/g++. Oczywiście po dopisaniu includów itp.

Co to za kompilator generujący komunikaty po polsku?

Kiedyś spotkałem taki kompilator, który uważał, że metoda ma dostęp do pól prywatnych jedynie obiektu this, do innych obiektów, nawet tej samej klasy (np parametry) już tego dostępu nie dawał.

1
komentarz 27 marca 2021 przez Landu Stary wyjadacz (11,880 p.)
Obstawiam, że to jest wbudowany kompilator z Visual Studio.
komentarz 27 marca 2021 przez NewEraOfPeace Gaduła (4,790 p.)
edycja 30 marca 2021 przez NewEraOfPeace
Kompilator od Visual Studio, czyli MSVC
komentarz 30 marca 2021 przez kacper1445 Gaduła (4,880 p.)

@Oscar, @NewEraOfPeace wbudowany kompilator VS

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 172 wizyt
+1 głos
1 odpowiedź 318 wizyt
0 głosów
2 odpowiedzi 353 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...