C++ Code

rabit

Level-1
Beiträge
60
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich sitz hier grad und will coden, verrecke aber bereits im Ansatz...
76.gif


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!?!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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
 
Befehle wie "extends" oder "System.out.println" haben weder mit C, C++ oder C# etwas zu tun.
Diese Befehle gibt es in Java.
 
Zurück
Oben