"<objekt>": Unbekannter Überschreibungsspezifierer [C++ | Visual Studio Community]?

Hallo, lieber Leser,

leider gelingt es mir partout nicht, Objektinstanzen innerhalb von Klassen weiter zu verwenden und ich befürchte, dass ich etwas Grundlegendes im Konzept der OOP übersehe bzw. nicht kenne.

In einem kleinen Freizeitprojekt von mir werden, was Beweggrund für diesen Post hier war, leider eine Reihe von Fehlern ausgespuckt, für die zu lösen zu versuchen ich schon eine Menge Zeit aufgewandt habe und welche ich alle auf eine Unkenntnis eines wichtigen Konzeptes, wie oben schon beschrieben, zurückführe.

Ich würde mich über konkrete Lösungsvorschläge genauso freuen, wie auf Hinweise, was ich wohl konzeptuell nicht so recht verstanden habe. Vielen Dank.

main.cpp: https://pastebin.com/PKCF75FR

Fehler: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand

Fehler C3646 "difficulty": Unbekannter Überschreibungsspezifizierer C:\Users*\source\repos*\main.cpp 9

Fehler C3646 "getDifficulty": Unbekannter Überschreibungsspezifizierer C:\Users*\source\repos*\main.cpp 20

Fehler C2065 "Item": nichtdeklarierter Bezeichner C:\Users*\source\repos*\main.cpp 76

Fehler C3646 "playerClass": Unbekannter Überschreibungsspezifizierer C:\Users*\source\repos*\main.cpp 73

Fehler C2923 "std::vector": "Item" ist kein gültiges Vorlage-Typargument für den _Ty-Parameter. C:\Users*\source\repos*\main.cpp 76

Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. * C:\Users*\source\repos*\main.cpp 73

Fehler C2059 Syntaxfehler: "(" C:\Users*\source\repos*\main.cpp 20

Fehler C2059 Syntaxfehler: "=" C:\Users*\source\repos*\main.cpp 9

Fehler C2238 Unerwartete(s) Token vor ";" C:\Users*\source\repos*\main.cpp 9

Fehler C2334 Unerwartete(s) Token vor "{"; sichtbarer Funktionstext wird übersprungen C:\Users*\source\repos*\main.cpp 20

Fehler C1903 Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen. C:\Users*\source\repos*\main.cpp 76

Grundlegende Fehler, also noch grundlegender, als die oben beschriebenen, dürfen ignoriert werden.

Computer, programmieren, CPP, Informatik, Visual Studio, Objektorientierung, Objektorientierte Programmierung
Fehler bei einem Quellcode(c++) -------------------------- expected unqualified-id before ‘{’ token?

Grüßt euch,

ich versuche seit einigen Minuten einen Quellcode zu schreiben. Irgendwie bekomme ich immer diese Fehlermeldung: "expected unqualified-id before ‘{’ token" in Zeile 10.

Ich finde da aber kein Fehler!!! Kann mir jemand mit ein wenig Erfahrung sagen, was mir der compiler sagen will?

Vielen lieben Dank.

// Matrix.cpp
#include <iostream>
#include <ctime> // random numbers
using namespace std;
const int COLUMN = 5;  // number of columns has to be constant
const int MAXROW = 5;

//------------------- definition of functions -----------------------
void showMat(double a[][COLUMN], int r);  // COLUMN must be given
{
    for  (int i = 0, i < 0, i++)
{
    for (int j = 0, j < COLUMN; j++)
    {
         cout << a[j] [a] <<" ";
    }
cout << endl;
          }
}
//-----------------------------------------main() - function ---------------------------------------

int main()
{
                      srand(time (0));
                       int  r;

                      do
                      {
cout << " Geben Sie die gewünschte Anzahl der Zeilen an maximal 5." << endl;
cin >> r;
} while (r < 1 || r > MAXROW);

double MatrA [COLUMN] [MAXROW] ;
double MatrB [COLUMN] [MAXROW] ;
double MatrS [COLUMN] [MAXROW] ;
double MatrD [COLUMN] [MAXROW] ;

for  (int i = 0; i <  r;  i++)
{
    for  (int j = 0; j < COLUMN; j++)
    {
                    MatrA[j][i]  = rand() % 10;
                    MatrB[j][i]  = rand() % 10;
                   MatrS[j][i]  = MatrA[j][i] +  MatrA[j][i];
                  MatrD[j][i]  = MatrA[j][i]  -  MatrA[j][i];  
              }
}
cout << endl << "Matrix A:" << endl;
showMatr(MatrA, r);
cout << endl << "Matrix B:" << endl;
showMatr(MatrB, r);
cout << endl << " Additionsmatrix:"<< endl;
showMatr(MatrS, r);
cout << endl << " Differentmatrix:" << endl;
showMatr(MatrD, r);
cout << endl;
system ("Pause");
return 0;
}
Computer, Technik, programmieren, compiler, Cplusplus, CPP, Informatik, Quellcode
C++: Kann ich diesen Code irgendwie noch vereinfachen?

Guten Abend,

ich schreibe gerade in C++ an einem kleinen Kniffelspiel. Im Moment bin ich soweit, dass ich mir fünf zufällige Zahlen (Würfel) über die rand()-Funktion erstelle, diese dann in einem Vektor speichere und anschließend über die Funktion auswertung() den höchsten Pasch zurückgebe. Jedoch ist der Code nicht gerade sehr kompakt. Hat jemand Vorschläge für Optimierungen?

Vielen Dank im Voraus!

#include <iostream>
#include <ctime>
#include <vector>
#include <random>

using namespace std;

vector<int> würfe()
{
  vector<int> list; // Ermittelt über die aktuelle Systemzeit 5 Zufallszahlen und übergibt sie dem Vektor list
  srand(time(0));

  for (int i = 0; i < 5; i++) {
    list.push_back(1 + rand() % 6);
    cout << list[i];
  }

  cout << endl;
  return list;
}

int auswertung(vector<int> ergebnis)
{
  int pasch = 0;

  // Verschachtelte for-Schleife iteriert durch Vektor und vergleicht alle Elemente miteinander
  for (vector<int>::iterator it = ergebnis.begin(); it != ergebnis.end(); ++it) {
    for (vector<int>::iterator it1 = ergebnis.begin(); it1 != ergebnis.end(); ++it1) {
      // Nur wenn die Werte gleich sind (Pasch) und nicht auf dasselbe Element zeigen, geht es weiter
      if (*it1 == *it && it != it1) {
        // Nur wenn der gefundene Pasch höher als der Höchste bereits gefundene ist, wird er ausgewertet
        if (*it > pasch) {
          switch (*it) {
            case 1: pasch = 1;
              break;
            case 2:
              pasch = 2;
              break;
            case 3: pasch = 3;
              break;
            case 4: pasch = 4;
              break;
            case 5: pasch = 5;
              break;
            case 6: pasch = 6;
              break;
          }
        }
      }
    }
  }

  return pasch;
}

int main()
{
  int pasch;
  vector<int> random = würfe();
  pasch = auswertung(random);

  cout << "Pasch: " << pasch << endl;
}
Computer, Software, Technik, programmieren, Cplusplus, CC, Code, CPP, Informatik, Softwareentwicklung, Technologie, C (Programmiersprache)
C++: Sonderzeichen lösen Problem aus?

Hallo Leute,

ich habe ein Problem mit Sonderzeichen.

Sonderzeichen wären:

und Zeichen mit Akzent, z.B. ê.

Hier mein Code:

for (auto & p : fs::directory_iterator(VARIABLE)) {
  fs::path pn = p.path();

  if (is_regular_file(pn)) {
    std::string ps = pn.string();
    do_something(ps)
  }
  else {
    give_me_some_error();
  }

Führe ich den Code eingebaut und mit entsprechenden Parametern aus, funktioniert dieser sehr gut und gibt mir auch die richtigen Ergebnisse zurück.

Problem ist, wenn ein oder mehrere (auch andere) Sonderzeichen, wie oben genannt, kommen. Dann wirft er mir bei

std::string ps = pn.string();

einen Fehler (siehe Bild) aus.

Unter Details anzeigen kommt dann:

Unbehandelte Ausnahme bei 0x755135D2 in Test1.exe: Microsoft C++-Ausnahme: std::system_error bei Speicherort 0x0090EF3C.

-

und wenn ich auf Ausnahmeeinstellungen gehe, kommt, dass er von Kernelbase.dll ausgelöst wurde.

Nach langem Suchen via Google habe ich zum einen herausgefunden, ich solle doch statt path() die u8path() nehmen. Das wirft mir jedoch einen Fehler aus (außer ich habe es falsch gemacht, ich bin neu in C++).

Und ich soll in den Einstellungen das Charset auf Unicode umstellen.

Das hat aber alles nichts gebracht.

Infos:

  • Ich nutze die neueste Version von Visual Studio 2019 (heute; 16.12 aktualisiert).
  • Ich habe schon gegoogelt, das hat jedoch nichts gebracht.
  • Die oben gezeigte for-Schleife ist in einer Funktion drinnen, wo die benötigten Parameter übergeben werden.
  • Das Programm funktioniert, solange kein Sonderzeichen kommt.

Ich hoffe, jemand von euch kann mir helfen. Ich bin echt am Verzweifeln.

Weitere Anmerkungen:

Ich habe gerade gesehen, dass mir, wenn ich über den String gehe, zusätzlich noch ausgegeben wird: "Fehler beim Lesen der Zeichenfolge". Ich weiß nicht ob das weiterhilft.

Bild zu Frage
Computer, Fehler, programmieren, Sonderzeichen, CPP, Visual Studio, UTF-8
c, c++ | LNK2019, Verweiß auf nicht aufgelöstes externes Symbol?

Natürlich habe ich, bevor ich hier frage, auch schon im Internet nach vorherigen ähnlichen Problemen gesucht und die gab es natürlich auch, aber keine der bereits vorhandenen Lösungen hat mir in meinem speziellen Fall wirklich geholfen.

Soweit wie ich es verstanden habe, meint dieser Error, dass man zB innerhalb einer Funktion einen Funktionsaufruf hat, von einer Funktion aus einer anderen Datei, diese findet der Linker aber nicht.

Es ist auch tatsächlich so, dass ich neben der Datei meiner main auchnoch andere Dateien verwende, nämlich genau zwei: header.h und header.cpp.

In der Headerdatei habe ich nur Deklarationen, in der cpp die entsprechenden Definitionen, beide Dateien habe ich im richtigen Verzeichnis und auch im Projekt-Explorer hinzugefügt, compilieren kann ich auch alles.

Bisher hatte es eigentlich immer funktioniert (unter der Voraussetzung dass ich die Dateien im Proj-Expl hinzugefügt habe)

Jetzt habe ich im selbigen namespace 4000 weitere Zeilen hinzugefügt, welche extern auch problemlos funktioniert haben und auch hier wird intellisense keine Fehler, aber sobald ich irgend eine der neuen Funktionen verwende (die alten gehen nach wie vor), wirft mir der Linker den Fehler LNK2019

(ConsoleApplication47.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""bool __cdecl MS::Experimental::save<int>(char const * const,int &)" (??$save@H@Experimental@MS@@YA_NQBDAAH@Z)" in Funktion "_main")

Zugegeben, es ist nicht ganz der gleiche namespace, aber der namespace befindet sich im gleichen namespace.

In der Headerdatei liegen die gleichen namespaces mit den Deklarationen und Visual Studio findet auch die dazugehörigen Definitionen.

Woran könnte es liegen? Muss ich vielleicht irgendwo in den Projekteinstellungen unter Linker eigentlich noch angeben, dass ich Funktionen aus der cpp nutze? Oder muss ich die Deklarationen mit dem Schlüsselwort extern machen?

Danke im Voraus schonmal für alle Antworten.

Hier noch für die die sich den Code durchlesen wollen (zumindest Teile)

Header:

namespace MS
{
  namespace Experimental
  {
    template <>  //Spezialisierung von vorheriger Funktion
    bool save(const char varName[], char &var);
  }
}

Cpp:

http://codepad.org/I6zkckyk       (ist zu lang)

Ich weiß, das ist alles im Moment noch nicht so schön gelöst, aber das ist ja auch noch nicht fertig :)

Alle Konstanten mit F_ sind im header definiert und werden erkannt.

Alle Funktionen mit F_ sind für den namespace von mir erstellte Funktionen, sie befinden sich über dieser Funktion.

Computer, Technik, programmieren, CPP, Technologie, Spiele und Gaming
Wie kann ich die C++ Version auf meinem Raspberry PI aktualisieren?

Hallo Community, ich versuche seid einiger Zeit MC auf dem PI zu installieren. Ich gehe dabei nach dieser Anleitung vor:

http://www.tutorials-raspberrypi.de/webserver/raspberrypi-als-minecraft-server/

Ich komme bis zu Schritt "cmake ...". Dort spuckt er mir folgende Fehlermeldung aus:

pi@raspberrypi ~/mc-server-orig $ cmake . -DCMAKE_BUILD_TYPE=RELEASE && make -- JsonCpp Version: 1.6.4 -- SQLITECPP_RUN_CPPLINT OFF -- SQLITECPP_RUN_CPPCHECK OFF -- SQLITECPP_RUN_DOXYGEN OFF -- SQLITECPP_BUILD_EXAMPLES OFF -- SQLITECPP_BUILD_TESTS OFF -- GCC Version >= 2.95 enabling no-strict-aliasing including polarssl -- Configuring done -- Generating done -- Build files have been written to: /home/pi/mc-server-orig [ 0%] Building CXX object lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/json_reader.cpp.o cc1plus: error: unrecognized command line option ‘-std=c++11’ cc1plus: error: unrecognized command line option ‘-std=c++11’ cc1plus: error: unrecognized command line option ‘-std=c++11’ lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/build.make:54: recipe for target 'lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/json_reader.cpp.o' failed make[2]: *** [lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/json_reader.cpp.o] Error 1 CMakeFiles/Makefile2:108: recipe for target 'lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/all' failed make[1]: * [lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/all] Error 2 Makefile:113: recipe for target 'all' failed make: * [all] Error 2

Ich habe ebenfalls g++ auf dem Raspberry aktualisiert, die Version ist aber die neuste.

Weiß jemand Rat? Vielen Dank im Voraus!

Installation, Minecraft, CPP, Pi, Raspberry

Meistgelesene Fragen zum Thema CPP