Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Klasy podstawy

Ostatnio zmodyfikowano 2017-03-17 09:37
Autor Wiadomość
andrzejek97
Temat założony przez niniejszego użytkownika
Klasy podstawy
» 2017-03-16 21:39:34
Witam, mam pewien problem nie do końca rozumiem błędy wyrzucane przez kompilator, jak również chciałbym dowiedzieć się jak sprawić, by niektóre sposoby wywoływania metod zadziałały, wklejam kod programu, który to ilustruje
C/C++
#include <iostream>

using namespace std;

class Rectangle {
    int width, height;
public:
    Rectangle();
    Rectangle( int, int );
    int area() { return( width * height ); }
};

Rectangle::Rectangle() { }

Rectangle::Rectangle( int a, int b ) {
    width = a;
    height = b;
}

int main() {
    Rectangle rect_a();
    Rectangle rect_b( 5, 6 );
   
    cout << rect_a.area() << endl; //tu nie
    //rozumiem błędu wyrzucanego przez kompila
    cout << rect_b.area() << endl;
    cout << rect_b.width * rect_b.height << endl; // czy istnieje jakiś myk, dzięki //któremu ten sposób zadziała
   
    return 0;
}
P-159049
pekfos
» 2017-03-16 22:51:08
C/C++
Rectangle rect_a();
To deklaracja funkcji.
P-159053
andrzejek97
Temat założony przez niniejszego użytkownika
» 2017-03-16 23:16:58
A rectangle rect_b(5, 6)?
P-159054
andrzejek97
Temat założony przez niniejszego użytkownika
» 2017-03-16 23:36:55
Rectangle rect_a bez nawiasów działa, a czy to przypadek, że za każdym razem dostaję teraz wartość 288 ?
P-159055
hit
» 2017-03-17 09:37:42
W którym miejscu otrzymujesz tą wartość? Jeśli przy wyliczaniu pola rect_a, to pewnie dlatego, że widht i heigth mają ustawione przypadkowe wartości ( Ty nie ustawiasz im żadnych ).

Edit:

C/C++
cout << rect_b.width * rect_b.height << endl; // czy istnieje jakiś myk, dzięki //któremu ten sposób zadziała


Istnieje, poczytaj o prawach dostępu. Jednak sposób z wywoływaniem metody area jest lepszy.
http://cpp0x.pl/kursy/Kurs-C++/Klasy-obiekty/311
P-159060
« 1 »
  Strona 1 z 1