Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

1

15.05.2007, 18:14

std::map insert problem

Bei folgendem Code

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  class ConsoleInputHandler : public IInputHandler
  {
  public:
    enum EAppCommand
    {
      AC_EXIT         = 0,
    };
  protected:
    std::vector<Token*>                     tokens_;
    std::map<std::wstring, EAppCommand>     command_mapping_;
    
  protected:
    typedef std::pair<std::wstring, EAppCommand>      cmd_map_pair;
  
  public:

    ConsoleInputHandler()
    {
      command_mapping_.insert(cmd_map_pair(L"exit", AC_EXIT));
      command_mapping_.insert(cmd_map_pair(L"quit", AC_EXIT));
      command_mapping_.insert(cmd_map_pair(L"halt", AC_EXIT));
    }
...
};


bekomme ich diese Fehlermeldungen

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Error   5   error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   6   error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   7   error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   8   error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   9   error C2784: 'bool std::operator <(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::vector<_Ty,_Alloc> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   10  error C2784: 'bool std::operator <(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::vector<_Ty,_Alloc> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   11  error C2784: 'bool std::operator <(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::vector<_Ty,_Alloc> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   12  error C2784: 'bool std::operator <(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::vector<_Ty,_Alloc> &' from 'const std::string'    c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   13  error C2784: 'bool std::operator <(const std::stack<_Ty,_Container> &,const std::stack<_Ty,_Container> &)' : could not deduce template argument for 'const std::stack<_Ty,_Container> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   14  error C2784: 'bool std::operator <(const std::stack<_Ty,_Container> &,const std::stack<_Ty,_Container> &)' : could not deduce template argument for 'const std::stack<_Ty,_Container> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   15  error C2784: 'bool std::operator <(const std::stack<_Ty,_Container> &,const std::stack<_Ty,_Container> &)' : could not deduce template argument for 'const std::stack<_Ty,_Container> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   16  error C2784: 'bool std::operator <(const std::stack<_Ty,_Container> &,const std::stack<_Ty,_Container> &)' : could not deduce template argument for 'const std::stack<_Ty,_Container> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   17  error C2784: 'bool std::operator <(const std::deque<_Ty,_Alloc> &,const std::deque<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::deque<_Ty,_Alloc> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   18  error C2784: 'bool std::operator <(const std::deque<_Ty,_Alloc> &,const std::deque<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::deque<_Ty,_Alloc> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   19  error C2784: 'bool std::operator <(const std::deque<_Ty,_Alloc> &,const std::deque<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::deque<_Ty,_Alloc> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   20  error C2784: 'bool std::operator <(const std::deque<_Ty,_Alloc> &,const std::deque<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::deque<_Ty,_Alloc> &' from 'const std::string'   c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   21  error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)' : could not deduce template argument for 'const std::reverse_iterator<_RanIt> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   22  error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)' : could not deduce template argument for 'const std::reverse_iterator<_RanIt> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   23  error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)' : could not deduce template argument for 'const std::reverse_iterator<_RanIt> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   24  error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)' : could not deduce template argument for 'const std::reverse_iterator<_RanIt> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   25  error C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : could not deduce template argument for 'const std::pair<_Ty1,_Ty2> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   26  error C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : could not deduce template argument for 'const std::pair<_Ty1,_Ty2> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   27  error C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : could not deduce template argument for 'const std::pair<_Ty1,_Ty2> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   28  error C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : could not deduce template argument for 'const std::pair<_Ty1,_Ty2> &' from 'const std::string' c:\program files\microsoft visual studio 8\vc\include\functional    143
Error   29  error C2676: binary '<' : 'const std::string' does not define this operator or a conversion to a type acceptable to the predefined operator c:\program files\microsoft visual studio 8\vc\include\functional    143


Wenn man die 3 insert-Statemants auskommentiert, sind die Fehler weg.
Irgendwie hab ich überhaupt keine Idee was da falsch läuft.
Jemand von euch vielleicht?

mfg Philipp

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

2

15.05.2007, 19:58

std::map sortiert die Einträge anhand des 1. Templateparameters mit dem < operator... du müsstest also diesen Operator für std::wstring definieren:

C-/C++-Quelltext

1
2
3
4
inline bool operator <(const std::wstring& _elem1, const std::wstring& _elem2)
{
    return (_elem1.compare(_elem2)<0);
}


Weiß grad nich, wie die Sortierung in dem Fall genau ist, evtl. musst du auch eine andere Vergleichsfunktion einsetzen (z.b. wegen Lowercase<>Uppercase)

3

15.05.2007, 20:39

hmm oder nimm einfach

C-/C++-Quelltext

1
std::vector< std::pair<std::wstring, EAppCommand> > m_commands; 
...

C-/C++-Quelltext

1
m_commands.push_back(std::make_pair(L"Exit", AC_EXIT));
...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

15.05.2007, 22:34

Wie wärs einfach mit einem:

C-/C++-Quelltext

1
#include <string>
@D13_Dreinig

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

15.05.2007, 22:39

Zitat von »"David_pb"«

Wie wärs einfach mit einem:

C-/C++-Quelltext

1
#include <string>

Davon wird der < operator auch nicht definiert -.-

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

15.05.2007, 22:41

Zitat von »"grek40"«

Zitat von »"David_pb"«

Wie wärs einfach mit einem:

C-/C++-Quelltext

1
#include <string>

Davon wird der < operator auch nicht definiert -.-


Achnein? :badgrin:
@D13_Dreinig

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

7

15.05.2007, 22:46

ich geb dir 99% drauf ^^

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

15.05.2007, 22:48

Zitat von »"grek40"«

ich geb dir 99% drauf ^^


string

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
template<class _Elem,
    class _Traits,
    class _Alloc> inline
    bool __CLRCALL_OR_CDECL operator<(
        const basic_string<_Elem, _Traits, _Alloc>& _Left,
        const basic_string<_Elem, _Traits, _Alloc>& _Right)
    {   // test if string < string

    return (_Left.compare(_Right) < 0);
    }


Verloren, was bekomm ich?
@D13_Dreinig

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

9

15.05.2007, 22:56

Ich frag mich grad ernsthaft, warum ich das Problem irgendwann mal hatte und manuell lösen musste - eigentlich hab ich string immer includiert^^

*kriegst nen virtuellen feuchten Händedruck dafür* :lol:

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

15.05.2007, 23:00

Zitat von »"grek40"«

Ich frag mich grad ernsthaft, warum ich das Problem irgendwann mal hatte und manuell lösen musste - eigentlich hab ich string immer includiert^^

*kriegst nen virtuellen feuchten Händedruck dafür* :lol:


Juhu... so'n virtuellen feuchten Händedruck bekommt man ja nich alle Tage! :D
@D13_Dreinig

Werbeanzeige