[C++] "Classes with Other Classes as Member Data"

Pagina: 1
Acties:
  • 232 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg het volgende niet aan de praat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream.h>

class invoer;
class opslag;

class invoer {
public:
int opslaan(int temp);
private:
int _temp;
};

class opslag {
public:
int opslagy(int temp);
int krijg();
private:
int _datasaved;
};

int invoer::opslaan(int temp) {
_temp = temp;
data2.opslagy(temp);
}

int opslag::opslagy(int temp) {
_datasaved = temp;
}

int opslag::krijg() {
return _datasaved; 
}



int main() {
opslag data2;
invoer data;
data.opslaan(347);
cout << data2.krijg();
system("pause");
return 0;
}


Dit is het voorbeeld script dat werkt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  // Begin Rect.hpp
  #include <iostream.h>
  class Point    // holds x,y coordinates
  {
     // no constructor, use default
     public:
        void SetX(int x) { itsX = x; }
        void SetY(int y) { itsY = y; }
        int GetX()const { return itsX;}
        int GetY()const { return itsY;}
     private:
        int itsX;
        int itsY;
  };    // end of Point class declaration


  class  Rectangle
  {
     public:
        Rectangle (int top, int left, int bottom, int right);
        ~Rectangle () {}

        int GetTop() const { return itsTop; }
        int GetLeft() const { return itsLeft; }
        int GetBottom() const { return itsBottom; }
        int GetRight() const { return itsRight; }

        Point  GetUpperLeft() const { return itsUpperLeft; }
        Point  GetLowerLeft() const { return itsLowerLeft; }
        Point  GetUpperRight() const { return itsUpperRight; }
        Point  GetLowerRight() const { return itsLowerRight; }

        void SetUpperLeft(Point Location)  {itsUpperLeft = Location;}
        void SetLowerLeft(Point Location)  {itsLowerLeft = Location;}
        void SetUpperRight(Point Location)  {itsUpperRight = Location;}
        void SetLowerRight(Point Location)  {itsLowerRight = Location;}

        void SetTop(int top) { itsTop = top; }
        void SetLeft (int left) { itsLeft = left; }
        void SetBottom (int bottom) { itsBottom = bottom; }
        void SetRight (int right) { itsRight = right; }

        int GetArea() const;

     private:
        Point  itsUpperLeft;
        Point  itsUpperRight;
        Point  itsLowerLeft;
        Point  itsLowerRight;
        int itsTop;
        int itsLeft;
        int itsBottom;
        int itsRight;
  };
 // end Rect.hpp


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
   // Begin rect.cpp
   #include "rect.hpp"
   Rectangle::Rectangle(int top, int left, int bottom, int right)
   {
         itsTop = top;
         itsLeft = left;
         itsBottom = bottom;
         itsRight = right;

        itsUpperLeft.SetX(left);
        itsUpperLeft.SetY(top);

        itsUpperRight.SetX(right);
        itsUpperRight.SetY(top);

        itsLowerLeft.SetX(left);
        itsLowerLeft.SetY(bottom);

        itsLowerRight.SetX(right);
        itsLowerRight.SetY(bottom);
  }


  // compute area of the rectangle by finding corners,
  // establish width and height and then multiply
  int Rectangle::GetArea() const
  {
        int Width = itsRight-itsLeft;
        int Height = itsTop - itsBottom;
        return (Width * Height);
  }

  int main()
  {
        //initialize a local Rectangle variable
        Rectangle MyRectangle (100, 200, 50, 80 );

        int Area = MyRectangle.GetArea();

        cout << "Area: " << Area << "\n";
        cout << "Upper Left X Coordinate: ";
        cout << MyRectangle.GetUpperLeft().GetX() << "\n";
        system("pause");
      return 0;
 }


Ik heb van die van mij geen .hpp gemaakt omdat ik dat er na pas wil doen, En de anti schrijf beveiliging op sommige delen heb ik er ook nog niet op gezet omdat ik de fout er eerst uit wil. maar goed,

Ik heb het bovenste geschreven allen hij meld een fout melding:
http://img192.imageshack.us/img192/4059/vraag.png < hier kunnen jullie zien waar de fout moet zitten maar het is een groot plaatje daarom heb ik er geen [img] van gemaakt.

Afbeeldingslocatie: http://img85.imageshack.us/img85/30/vraag2.png

Ik heb geprobeerd om de regel uit het script te halen en in main() gezet ( en temp aangepast naar een getal ) en dat werkt wel. Maar ik wil dat hij het ook vanuit class kan aanspreken.

Ik heb het voorbeeld script helemaal door gelopen maar ik kan het daar ook niet in vinden.
Ik heb dit uit het voorbeeld gehaald en aangepast:

code:
1
2
private:
        Point  itsUpperLeft;


Maar dat is het ook niet. Mijn commando is dus fout omdat het wel in main() werkt maar niet in class.

Dus:

code:
1
2
3
4
5
6
7
8
int invoer::opslaan(int temp) {
_temp = temp;
data2.opslagy(temp); // dit deel moet communiceren met
}

int opslag::opslagy(int temp) {   // dit deel.
_datasaved = temp;
}


Wat is er fout aan dat commando?

Fijne kerst dagen

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Het staat er toch? Je hebt geen beschikking over het object data2 in die functie.

Moeten we je nog uitleggen wat begrijpend lezen is?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat snapte ik al,
Maar met welk commando krijg ik dat dam wel door elkaar?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Geen, heel je opzet is fout.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ah jammer,
dan zal ik eens het op een andere manier het proberen.

Edit:
toch bedankt

[ Voor 14% gewijzigd door Verwijderd op 25-12-2009 20:56 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:27

Creepy

Tactical Espionage Splatterer

Hier op GoT gaan we er vanuit dat je foutmeldingen als deze gewoon zelf kunt oplossen. De foutmelding is erg helder en dit soort zaken oplossing vergt over het algemeen niet meer dan basiskennis van de omgeving waarin je werkt. Het zou je sieren je nu eens wat van de berichten van moderators hier aan te trekken. Hoe je het forum nu wilt gebruiken is niet de bedoeling.

[ Voor 23% gewijzigd door Creepy op 25-12-2009 21:07 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.