| 

.NET C# Java Javascript Exception

2
Hallo Leute

Habe folgendes Problem:
class Auto
{
Oberflaeche context;

private Int32 v = 1; //Geschwindigkeit
private double direction = 0; //Richtung
private Int32 posX;
private Int32 posY;

public Auto()
{
}
public void zeichneAuto()
{
posX = (context.pboxAuto.Location.X) + direction;
posY = (context.pboxAuto.Location.Y) + v;
context.pboxAuto.Location = new System.Drawing.Point(posX, posY);
}
}


Aus der Klasse Auto heraus sollen die Positionskoordinaten einer PictureBox in Form1 (hier zu Oberflaeche umbenannt) geänder werden.

Wenn ich das alles so kompiliere, bringt er keinen Fehler, erst während dem Debugging: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Wenn ich im Konstruktor folgendes ergänze public Auto(Oberflaeche main){context = main} sollte eigentlich doch alles funktionieren oder? Jedoch weiß ich nicht wie ich den Konstruktor dann aufrufen, denn egal was ich der Instanzierung mitgeben möchte, so wird immer ausgespuckt, dass der Konstruktor keine 0 - Objekte verarbeiten kann.

Danke im Vorraus :)
News:
27.04.2014
Programmer3000 1 1 1
lbm1305 849 1 8
1 Antwort
0
Soweit ich das sehen kann, liegt das Problem an der Initialisierung der Instanzvariablen context.
Entweder sollte ein weiterer Konstruktor:
public Auto(Oberflaeche oberfl)
{
context = oberfl;
}

eingefügt werden oder der Context müsste an die Methode zeichneAuto übergeben werden:
public void zeichneAuto(Oberflaeche oberfl)
{
context = oberfl;
... weiter mit den Anweisungen
}

Leider wurde nicht beschrieben, wie der Aufruf der Klasse Auto passiert. Prinzipiell sollte aber beim Aufruf new Auto() gegen new Auto(oberfl) austauschbar sein. Wenn das nicht möglich ist, dann muss wahrscheinlich ein Wrapper für diesen speziellen Aufruf verwendet werden.

Egal, was man verwendet - die Instanzvariable muss initialisiert werden, damit kein Objektreferenzfehler auftritt.

Alternative:
Konfigurationsklasse Config als Singleton global in der Anwendung mit einer Methode getContext(), die die Oberfläche liefert. Dann
public void zeichneAuto()
{
context = Config.getInstance().getContext();
... weiter mit den Anweisungen
}


Ich hoffe, dies löst das Problem.
28.04.2014
edvservice 1,4k 1 6

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH