2016-05-07 13 views
0

ich diesen Code wurde mit: Der erste ist Rectangle.hppProbleme mit Klassen wie andere Klassen-Mitgliedsdaten in C++

#include <iostream> 
//Point 
class point { 
public: 
    void setxy(int nx, int ny); 
    const int getx(); 
    const int gety(); 
private: 
int x; 
int y; 

}; 
void point::setxy(int nx, int ny) { 
x = nx; 
y = ny; 
}; 

const int point::getx() { return x; }; 
const int point::gety() { return y; }; 
//Rectangle 
class rectangle { 
public: 
rectangle(point nLl, point nLr, point nUl, point nUr); 
void getArea(); 
const point getLl() { return Lleft; }; 
const point getLr() { return Lright; }; 
const point getUl() { return Uleft; }; 
const point getUr() { return Uright; }; 
const int getRight() { return Right; }; 
const int getLeft() { return Left; }; 
const int getTop() { return Top; }; 
const int getBottom() { return Bottom; }; 
private: 
point Lleft; 
point Lright; 
point Uleft; 
point Uright; 
int Right; 
int Left; 
int Top; 
int Bottom; 
}; 
void rectangle::getArea() { 
int width = Right - Left; 
int height = Top - Bottom; 
std::cout << "The area is " << width * height << ".\n"; 
}; 
rectangle::rectangle (point nLl, point nLr, point nUl, point nUr) 
{ 

Lleft = nLl; 
Lright = nLr; 
Uleft = nUl; 
Uright = nUr; 
Right = Lright.getx(); 
Left = Lleft.getx(); 
Top = Uleft.gety(); 
Bottom = Lleft.gety(); 
}; 

Dies ist Rectangle.cpp:

#include <iostream> 
#include "rectangle.hpp" 
int main() { 
point nnUleft; 
nnUleft.setxy(0,2); 

point nnUright; 
nnUright.setxy(2,2); 

point nnLright; 
nnLright.setxy(0, 0); 

point nnLleft; 
nnLleft.setxy(0, 2); 

rectangle qd(nnLleft, nnLright, nnUleft, nnUright); 
qd.getArea(); 
char bin; 
std::cin >> bin; 
std::cout << bin; 

} 

Mein Problem ist, dass Wenn es kompiliert wird, gibt es 0 aus, wenn es ausgeben sollte. Wie mache ich es so, dass es ausgibt, was es soll? Warum funktioniert es überhaupt nicht?

+1

Sie haben auch ein anderes Problem: Ihr Code nicht korrekt eingerückt ist, und aus diesem Grund ist ziemlich unlesbar. Es ist doppelt so schwer, Bugs zu beheben, wenn der Code verstümmelt ist. Sie müssen Ihren Code korrigieren und ihn richtig einrücken, um Ihre Chancen zu verbessern, jemanden zu finden, der bereit ist, ihn zu durchsuchen, und Ihr Code-Problem herauszufinden. –

+0

Sicher sollte einer dieser Punkte 2,0 und nicht 0,2 sein? – user657267

Antwort

0

aus dem Code:

Left = 0 (nnuLeft.x) 
Right = 0 (nnLright.x) 
Top = 2 (nnULeft.y) 
Bottom = 2 (nnLleft.y) 

so width = 0, Höhe = 0, so ergibt sich 0

Also Ihr unten links und unten rechts Notwendigkeit, verschiedene X-Werte haben. Ebenso benötigen Ihre linken oberen und unteren linken Seite unterschiedliche Y-Werte

+0

Ich habe das gerade herausgefunden, bevor ich das gelesen habe :-P – TheBeginningProgrammer

0

Ihr Rechteck ist kein echtes Rechteck. Ihre Form ist zwei Zeilen in Ihrer main Funktion.

Wenn Sie ein echtes Rechteck erhalten möchten, ändern Sie Ihren Code.

ich geändert Code wie folgt:

#include <iostream> 
#include "rectangle.hpp" 
int main() { 
    point nnUleft; 
    nnUleft.setxy(0, 2); 

    point nnUright; 
    nnUright.setxy(2, 2); 

    point nnLright; 
    nnLright.setxy(2, 0);//here 

    point nnLleft; 
    nnLleft.setxy(0, 0);//and here 

    rectangle qd(nnLleft, nnLright, nnUleft, nnUright); 
    qd.getArea(); 
    char bin; 
    std::cin >> bin; 
    std::cout << bin; 

}