FAQ

 

Hinweise

Um den Simulationsserver zu Hause starten zu können ist zumindest ein Runtimesystem von Java 2 erforderlich. Das jar-File muss im Arbeitsverzeichnis liegen. Beachten Sie dazu auch die Hinweise im Readme.txt, das sich im ZIP-File befindet.

 

Programmierung

Eingabedatei nicht gefunden (Aufgabe 8)

Das Arbeitsverzeichnis ist C:\temp. Die Dateien müssen also in diesem Verzeichnis liegen oder beim Öffnen muss der volle Pfad angegeben werden

warning C4786 : ... Bezeichner wurde auf 255 Zeichen in den Browser-(Debug-)Informationen reduziert

definieren Sie in allen betroffenen Headerdateien: #pragma warning(disable : 4786)

Fehlermeldung: can not convert binary operator .... (Operatoraufruf von z.B. cout/cin)

1. #include <iostream.h> anstatt #include <iostream>
2. beim Überladen des allgemeinen >> operators wurde ostream& als 1. Parameter vergessen

Fehlermeldung des Linkers: error LNK2001: Nichtaufgelöstes externes Symbol ...: static ...

Statische Variable nicht nur in H-Datei kreieren, sondern in CPP-Datei anlegen und initialisieren

Fehlermeldung: Debug Assertion Failed ... BLOCK_TYPE_IS_VALID ...

Speicher wurde doppelt freigegeben

Fehlermeldung "Nicht deklarierte Bezeichner" für Membervariablen

Zuordnung der Funktion zu Klasse (Klassenname:: vor Funktionsaufruf) fehlt

Fehlermeldung: Überladene Member-Funktion ... nicht in ... gefunden

Entsprechender Prototyp in H-Datei fehlt oder stimmt nicht mit Implementierung überein. Wichtig: Auch const-Angaben müssen übereinstimmen

Der Compiler kennt cout nicht

Wenn die STL benutzt wird (einschl. String), muss für cout der entsprechende Namespace (std) angegeben werden. Entweder explizit durch std::cout oder allgemein durch "using namespace std"

Es wird auch für PKW immer vPrint aus Fahrzeug statt aus PKW benutzt

Funktion vPrint ist in Fahrzeug nicht virtuell definiert oder es werden Objekte statt Zeigern/Referenzen benutzt (und damit z.B. bei Parameterübergabe nach Fahrzeug konvertiert)

Wechsel zwischen rechts-/linksbündig bei Formatierung mit ioflags funktioniert nicht

Flags left und right sind zwei unabhängige Flags, die theoretisch beide gleichzeitig gesetzt sein können. Dann geht left vor. Man muss also, ggf. das Flag mit resetiosflags zurücksetzen

Bei der Ausgabe mit dem Ausgabeoperator wird statt der Daten nur eine 8-stellige Zahl ausgegeben. Wie kommt das?

Es wurde statt des Objektes ein Zeiger ausgegeben. Es fehlt eine entsprechende Dereferenzierung also z.B. cout << *pPKW

Der Grafikserver zeichnet keine Fahrzeuge. Was kann falsch sein?

Die relative Position muss zwischen 0 und 1 liegen, sonst wird nichts gezeichnet und statt dessen unten links 'Exception Null' ausgegeben. Die Namen der Wege müssen Variablen vom Typ string sein und vorher mit diesem Namen gezeichnet worden sein. Es müssen mindestens 3 verschiedene Positionen für ein Fahrzeug gezeichnet werden, da die erste und letzte Position wegen der Geschwindigkeit nicht zu erkennen sind.

Sollen die Elemente eines Vektors mit dem pop_back()-Befehl oder mit delete vektor[i] gelöscht werden?

Das sind 2 verschiedene Dinge:

  1. delete vektor[i] löscht das Element vektor[i], aber nimmt es nicht aus dem vektor. vektor[i] ist also noch definiert, zeigt aber ins "Nirwana".
  2. pop_back() löscht das Element aus dem vektor, das Element selbst bleibt aber erhalten, es kann also (über eine andere Variable) noch benutzt werden.

Wenn ich die map in AktivesVO als static deklariere, bekomme ich vom Linker eine Fehlermeldung wegen eines unaufgelösten externen Verweises. Was ist falsch?

Wenn eine Variable im Headerfile als static definiert wird, wird damit noch kein Speicherplatz für diese Variable angelegt (da sie ja nur einmal angelegt werden soll). Man muss also in der zugehörigen cpp-Datei noch den entsprechenden Speicherplatz für die Variable definieren: map AktivesVO::VOMap;

Beim letzten Durchlauf der Liste scheint der Iterator nicht zu funktionieren, aber ich bekomme weder beim Compilieren noch beim eigentlichen Programmablauf eine Fehlermeldung. Das Programm gerät einfach in eine Endlosschleife. Kennt jemand eine Lösung?

LazyListe.end() ist nicht der "letzte Iterator", sondern zeigt hinter das letzte Element der Liste (siehe auch Skript Kapitel 3.4). Eine Schleife zum Durchlaufen der Liste sollte also etwa so aussehen:
for (itL=liste.begin(); itL!=liste.end();itL++) ...
(itL als Iterator auf Liste vorausgesetzt). Syntaktisch sind auch Operationen mit "Iterator end" korrekt, semantisch meist nicht. Das Programm läuft in einer Endlosschleife, da Liste.end()++ wieder denselben Wert ("Iterator end") liefert.

 

Entwicklungsumgebung

Die Anwendung konnte nicht gestartet werden, weil MSVCP80D.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.

Projekteigenschaften aufrufen (Projekt -> [Projektname]->Eigenschaften bzw. einfach Alt+F7) und unter Konfigurationseigenschaften/Manifesttool die Option "FAT32-Problem umgehen" aktivieren

Linker Fehler folgender Art: LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/vvv.exe : fatal error LNK1120: 1 unresolved externals

Es wurde bei New Projects ein falsches Projekt ausgewählt (in obigem Fall Win32 Application anstatt Win32 Console Application)

Stdafx.h wird nicht gefunden

Stdafx.h aus Projekt und Verweise aus Dateien löschen. Beim Erstellen des Projektes wurde nicht "Leeres Projekt" gewählt

Projekt wurde zu Hause richtig übersetzt, aber im CIP-Pool gibt es Fehler

Nur die *.CPP- und *.H-Dateien von zu Hause mitbringen und im CIP-Pool in Projekt integrieren. Danach Menüpunkt "Alles neu erstellen" aufrufen

Source-Dateien können nicht gespeichert werden

Mehr als 10 MB auf U: verbraucht. Arbeitsbereiche auf C:\temp legen. Inhalt der Debug-Verzeichnisse auf U: löschen. Mail löschen und Trashfolder in Netscape leeren. Freigabe dauert nach Bereinigung ca. 15 Min