Ich habe gerade nach langer Zeit mit der Programmierung in C++ begonnen, und vielleicht fehlt mir hier etwas syntaktisch Offensichtlich, aber ich habe lange gesucht und kann keine finden Verweis auf mein Problem überall. Ich versuche, eine benutzerdefinierte C++ - Klasse für set
und multiset
zu erstellen.Syntaxfehler: fehlende ',' vor '<'
Hier ist meine Klasse cset.h
#pragma once
#include <set>
#include "cmultiset.h"
template <class Type>
class Set : public set<Type>
{
private:
public:
void add(Type &);
};
Und hier ist mein cmultiset.h
#pragma once
#include <set>
template <class Type>
class MultiSet : public multiset<Type>
{
private:
public:
bool operator < (MultiSet <Type> &);
};
Was ich versuche, hier zu tun ist, eine Set<MultiSet<int>>
in meinem Fahrer erstellen Klasse. Aber erhalten Sie den folgenden Fehler zweimal für jede Datei stattdessen in den obigen Header-Dateien um class Set : public set<Type>
und .
syntax error: missing ',' before '<'
Ich weiß nicht, wie Sie diesen Fehler beheben können.
Wenn ich nur set<MultiSet<int>>
benutze funktioniert alles gut: keine Fehler keine Warnungen (ich muss using namespace std;
vor der Vorlage hinzufügen). Aber wenn ich Set<MultiSet<int>>
benutze gibt es den Fehler und using namespace std
funktioniert nicht.
Edit 1:
Fehler:
Severity Code Description Project File Line Suppression State
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cmultiset.h 6
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cmultiset.h 6
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cset.h 7
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cmultiset.h 6
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cset.h 7
Edit 2:
Hier ist meine main.cpp
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include "cmultiset.h"
#include "cset.h"
using namespace std;
int main()
{
Set<MultiSet <int>> intSet;
intSet.clear();
_getch();
return 0;
}
Hier
ist mein MultiSet.cpp
#pragma once
#include "stdafx.h"
#include "cmultiset.h"
using namespace std;
template <class Type>
bool MultiSet<Type>::operator < (MultiSet<Type> & cmpSet)
{
if (this->size() < cmpSet.size())
{
return true;
}
else if (this->size() > cmpSet.size())
{
return false;
}
for (multiset<Type>::iterator it = this->begin(), jt = cmpSet.begin(); it != this->end(), jt != cmpSet.end(); ++it, ++jt)
{
if (*it < *jt)
return true;
}
return false;
}
Hier ist meine Set.cpp.
#pragma once
#include "stdafx.h"
#include "cset.h"
using namespace std;
template <class Type>
void Set<Type> :: add(Type & entry)
{
set<Type>::insert(entry);
}
** Bad ** Idee erben von 'std :: container'-s, BTW. – edmz
Ja, ich weiß von 'std :: container' zu erben und Speicher zu löschen. Ich möchte es trotzdem tun – Abbas
Bitte versuchen Sie ein [Minimal, Complete und Verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und zeigen Sie uns. Und enthalten Sie auch die vollständige Fehlerausgabe, vollständig und unbearbeitet (auch wenn es so lang ist, wie es ist, wenn Vorlagen beteiligt sind). –