# C++ Code



## rabit (9 Dezember 2009)

Ich sitz hier grad und will coden, verrecke aber bereits im Ansatz... 
	

	
	
		
		

		
			





Der Code:

*abstract class Member {

    private String name;

    String getName(String name) {return this.name;}

    void setName() {this.name = name;}

    abstract void printInfos();

    }

class Student extends Member {

    void printInfos() {System.out.println(name);}

    }* 

Das Problem: Der Compiler sagt, printInfos(); (in der Student class) habe keinen Zugriff auf (private String) name. Aber ich habe der Klasse Student doch die entsprechenden Getter und Setter vererbt?! Demnach müssten die doch auch in der extend-Klasse greifen!?!


----------



## Rainer Hönle (10 Dezember 2009)

Müsste nicht das Argument "String name" statt bei getName bei setName stehen?


----------



## Neals (10 Dezember 2009)

Der String "name" bei dir ist private! Damit ist er auch nur in der Klasse verfügbar, in der er deklariert wurde.

Wenn du in abgeleiteten Klassen auch auf die Variable zugreifen willst, muss sie protected sein. Damit wird sie auch vererbt.


----------



## georg_demmler (10 Dezember 2009)

Hallo,

hoffe das ich mich nicht irre. Aber ich glaube, dies ist kein C++ Code (steht ja im Threadtitle - schaut aus wie Java). Hab das mal in C++ umgesetzt:

#include "stdafx.h"
#include <iostream>
using namespace std;

class Member 
{
public:
    char *Name;
    Member(char *m_name) { Name = m_name;};
char* GetName() { return Name;};
    virtual void printInfos() {cerr << "Error. Name not available for base type." << endl; };
    };

class Student  : public Member
{
public:
    Student(char* c) : Member(c) {}
    void printInfos() { cout << "Name des Studenten: " << GetName(); };
};


int _tmain(int argc, _TCHAR* argv[])
{
    Student student("Holger");
    student.printInfos();
    return 0;
}

Viel Spass


----------



## rabit (10 Dezember 2009)

Hast dir echt Mühe gemacht Danke!
Ich teste das mal.


----------



## RobiHerb (11 Dezember 2009)

*C#*

Also C++ ist das nicht, ich vermute mal stark, dass das C# sein soll!

Ansonsten geht das so nicht, erst ein Buch lesen, dann trainieren.

Man sollte schon das Konzept von private, protected und public verstehen.

Man sollte auch interface, virtual, abstract und override sowie extend verstehen, bevor man sich an die Implementierung macht. 

Wenn das Wissen hierzu nicht vorhanden ist, Zug um Zug dazulernen und erst einmal mit den einfachen Konstrukten anfangen. Und nicht verzagen, alle haben mal klein angefangen.

Es gibt sehr gute Fachbücher und die sind allemal ihr Geld wert.


----------



## georg_demmler (12 Dezember 2009)

Hallo,

wie kommst du auf C# ??

Kennt C# das Schlüsselwort "extends" oder vielleicht "System.out.println" ?

Ich glaube nicht. "System.out.println" ist in C# "Console.Writeline". Und statt dem "extends" wird ein ":" gesetzt, um hier die Herkunft einer abstrakten Klasse darzustellen.


Viel Spass 

Georg


----------



## Roland.K (3 Januar 2010)

Befehle wie "extends" oder "System.out.println" haben weder mit C, C++ oder C# etwas zu tun.
Diese Befehle gibt es in Java.


----------



## rabit (3 Januar 2010)

Ja danke Prob ist bereits gelöst!
Ist Java richtig.


----------



## Rainer Hönle (3 Januar 2010)

rabit schrieb:


> Ja danke Prob ist bereits gelöst!


Und wie? 
Interessiert vielleicht noch mehr.


----------

