c++ Klasse. Bekomme keine Zugriff auf Methoden/Funktionen



  • Ich habe in meiner main.cpp Datei irgendwie keinen Zugriff auf meine Funktionen aus meiner Klasse in meiner h.Datei. Z.B display() funktioniert einfach nicht in meiner main.cpp Datei. Ich dachte anfangs es hat eventuell mit Zugriffsrechten zu tun, aber meine Funktionen sind doch alle public.
    Oder übersehe ich irgendwas?
    Liebe Grüße

    // meine RGB.Color.cpp Datei
    
    #include "RGB_Color.h"
    
    void RGB_Color::display()
    {
    	cout << "rot: " << red << "gruen: " << green << "blau: " << blue << endl;
    }
    
    // meine RGB.Color.h Datei
    #pragma once
    #include <iostream>
    using namespace std;
    
    class RGB_Color
    {
    
    private:
    		int red, green, blue;
    
    public: int red, green, blue;
    		int get_red() const { return red; } // Getter für x1
    		void set_red(int a) { if(a >=0 && a <=255) red = a; } // Setter für x1
    		int get_green() const { return green; } // Getter für y1
    		void set_green(int b) { if (b >= 0 && b <= 255) green = b; } // Setter für y1
    		int get_blue() const { return blue; } // Getter für x2
    		void set_blue(int c) { if (c >= 0 && c <= 255) blue = c; } // Setter für x2
    
    		RGB_Color()
    		{
    			set_red(255);
    			set_green(255);
    			set_blue(255);
    		}
    
    		RGB_Color(int a, int b, int c)
    		{
    			set_red(a);
    			set_green(b);
    			set_blue(c);
    		}
    
    		RGB_Color set_color(int a, int b, int c)
    		{
    			set_red(a);
    			set_green(b);
    			set_blue(c);
    		}
    
    		void display();
    
    		bool input_color()
    		{
    			cout << "rot (0...255): ? ";
    			int a;
    			cin >> a;
    			if (a >= 0 && a <= 255)
    			{
    				return true;
    			}
    			else
    				return false;
    
    			cout << "gruen (0...255): ? ";
    			int b;
    			cin >> b;
    			if (b >= 0 && b <= 255)
    			{
    				return true;
    			}
    			else
    				return false;
    
    			cout << "blau (0...255): ? ";
    			int c;
    			cin >> c;
    			if (c >= 0 && c <= 255)
    			{
    				return true;
    			}
    			else
    				return false;
    
    		}
    
    };
    
    // meine main.cpp Datei
    using namespace std;
    #include <iostream>
    #include "RGB_Color.h"
    
    int main()
    {
    
    	system("PAUSE");
    	return 0;
    }
    


  • Wenn du das so auch bei dir hast, was soll denn deiner Meinung nach geschehen?

    // meine main.cpp Datei
    using namespace std;
    #include <iostream>
    #include "RGB_Color.h"
    
    int main()
    {
    
        system("PAUSE");
        return 0;
    }
    


  • du musst in main ein Objekt der Klasse anlegen. Die Klasse ist nur die Kuchenform, der Kuchen ist dann das erzeugte Objekt.

    also

    int main()
    {
      RGB_Color rgb;
      rgb.display();
    
      return 0;
    }
    


  • RGB_Color schrieb:

    du musst in main ein Objekt der Klasse anlegen. Die Klasse ist nur die Kuchenform, der Kuchen ist dann das erzeugte Objekt.

    also

    int main()
    {
      RGB_Color rgb;
      rgb.display();
    
      return 0;
    }
    

    Genau das hab ich gesucht. Ich habe davor die ganze Zeit mit RGB_Color.display()
    und ähnlichen Schreibweisen versucht mein Ziel zu erreichen. Heisst ich muss immer erst ein Klassenobjekt in main erstellen bevor ich mit Klassen dort arbeiten kann.
    Danke;)



  • as1as schrieb:

    Heisst ich muss immer erst ein Klassenobjekt in main erstellen bevor ich mit Klassen dort arbeiten kann.
    Danke;)

    Nein, du musst Objekte erstellen, um mit Objekten zu arbeiten.

    Dein Lernmaterial scheint nicht so berauschend zu sein ...



  • Wie heisst deine Datei denn?

    // meine RGB.Color.cpp Datei
    
    #include "RGB_Color.h"
    
    // ...
    // meine RGB.Color.h Datei
    

    Dir mag das ja egal sein, aber deinem Compiler oder Linker nicht. 😉


Anmelden zum Antworten