C oder C++
-
basti431 schrieb:
Meine überlegung war mich zuerst mit der Objekt-Orientierten Programmierung zu befassen (was ich ehrlichgesagt noch nie getan habe)....Deshalb dachte ich das es mir etwas bringen könnte wenn ich zuerst C++ lerne.
um oop zu machen gibts besseres. frag z.b. mal u_ser-l, der würde dir smalltalk ans herz legen.
basti431 schrieb:
Ich benutze wie gesagt als Compierler VC++ 2008 express. Kann ich damit auch C programme compilieren oder brauch ich da einen anderen?
das geht schon, aber er kann kein C99. für C99 könnteste z.b. pelles-C oder code->blocks mit mingw nehmen.
basti431 schrieb:
Aber nur so am rande. Warum ist cout so viel umständlicher als printf? Ich merke nur das es durch die vielen "<<" hässlicher ist
bei printf haste am anfang 'nen format-string für die gesamte ausgabe. das z.b. macht printf leichter benutzbar und übersichtlicher. bei cout müssteste immer, wenn du die formatierung ändern willst, neue formatoptionen mit << dazwischenschieben. das ist ziemlich umständlich (im verhältnis zu printf).
-
basti431 schrieb:
Aber nur so am rande. Warum ist cout so viel umständlicher als printf? Ich merke nur das es durch die vielen "<<" hässlicher ist
C
printf("(%8.2f,%8.2f)\n", x, y);
C++
std::cout << "(" << std::setprecision(2) << std::setiosflags(std::ios::fixed) << std::setw(8) << x << "," << std::setw(8) << y << ")" << endl;
Also ich finde den C++ Code weitaus intuitiver und übersichtlicher!
-
Sorry da fehlt noch ein std:: vor endl sonst gibts 1012 Fehler.
-
Meine Beteiligung an der Debatte (welche Sprache fuer was besser ist und ueberhaupt das Grosse ganze) ist eine Antibeteiligung.
-
Was noch ein großer Pluspunkt an C++ ist, sind die übersichtlichen Fehlermeldungen durch den Compiler. So weiß man sofort, was wo schiefgelaufen ist.
Also beispielsweise dieser Code
#include <list> #include <string> #include <algorithm> using namespace std; void foo( list<string>& x ) { sort(x.begin(),x.end()); // wrong iterator type }
wird von dem C++ Compiler natürlich mit einer aussagekräftigen Meldung beanstandet:
readply.cpp:109: conversion from ‘_List_iterator<list<basic_string<c har,string_char_traits<char>,__default_alloc_template<true,0> >,allo cator<basic_string<char,string_char_traits<char>,__default_alloc_tem plate<true,0> > > >,const list<basic_string<char,string_char_traits< char>,__default_alloc_template<true,0> >,allocator<basic_string<char ,string_char_traits<char>,__default_alloc_template<true,0> > > > &,c onst list<basic_string<char,string_char_traits<char>,__default_alloc _template<true,0> >,allocator<basic_string<char,string_char_traits<c har>,__default_alloc_template<true,0> > > > *>’ to non-scalar type ‘ list<basic_string<char,string_char_traits<char>,__default_alloc_temp late<true,0> >,allocator<basic_string<char,string_char_traits<char>, __default_alloc_template<true,0> > > >’ requested/usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h: In func\ tion ’void std::sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = std\ ::_List_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’: big-error.C:8: instantiated from here /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2829: er\ ror: no match for ’operator-’ in ’__last - __first’ /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h: In func\ tion ’void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAc\ cessIterator = std::_List_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<ch\ ar> > >]’: /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2831: \ instantiated from ’void std::sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessI\ terator = std::_List_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’ big-error.C:8: instantiated from here /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2436: er\ ror: no match for ’operator-’ in ’__last - __first’ /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2438: er\ ror: no match for ’operator+’ in ’__first + 16’ /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2439: er\ ror: no match for ’operator+’ in ’__first + 16’ /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h: In func\tion ’void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIt\ erator = std::_List_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’: /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2442: \ instantiated from ’void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator) [w\ ith _RandomAccessIterator = std::_List_iterator<std::basic_string<char, std::char_traits<char>, std:\ :allocator<char> > >]’ /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2831: \ instantiated from ’void std::sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessI\ terator = std::_List_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’ big-error.C:8: instantiated from here /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2352: er\ ror: no match for ’operator+’ in ’__first + 1’ /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2442: \ instantiated from ’void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator) [w\ ith _RandomAccessIterator = std::_List_iterator<std::basic_string<char, std::char_traits<char>, std:\ :allocator<char> > >]’ /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2831: \ instantiated from ’void std::sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessI\ terator = std::_List_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’ big-error.C:8: instantiated from here /usr/lib64/gcc/x86_64-unknown-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/stl_algo.h:2358: er\ ror: no match for ’operator+’ in ’__i + 1’
Die detaillierten Fehlerbeschreibungen und Warnungen der C++ Compiler können einem sehr viel Zeit bei der Fehlersuche ersparen.
-
Da muss man mal vorher die Doku lesen, z.B. hier: http://www.sgi.com/tech/stl/sort.html . Da steht dann unter Requirements on types so Sachen (Nicht geeignet fuer Kinder unter drei Jahren).
-
C++ Rocks schrieb:
Was noch ein großer Pluspunkt an C++ ist, sind die übersichtlichen Fehlermeldungen durch den Compiler. So weiß man sofort, was wo schiefgelaufen ist.
Siehe Sig, erster Link.
-
C++ Rocks! Das hat doch nichts mit C++ zu tun, sondern (wie du selber schon richtig festgestellt hast) liegt es am Compiler - sprich am Tool.
Der MSVC spuckt z.B. ganz andere Fehlermeldungen aus. Die vorallem meiner Erfahrung nach viel verständlicher sind. Weiterhin spuckt der MSVC z.B. zusätzlich Error-Codes aus (die der gcc nicht hat). Somit kann man den Error-Code in die MSDN eingeben, und dort stehen sehr ausführliche Beschreibungen und sogar Lösungsvorschläge zu den Errors!Wenn ich einen BASIC-Compiler benutze, der schreckliche und missverständliche Fehlermeldungen ausgibt, hilft es mir absolut nichts, wenn BASIC eine gute Anfängersprache ist. Der BASIC-Compiler ist dann halt Mist.
Achja: Java ist die beste Sprache von der Welt!
-
Artchi schrieb:
Achja: Java ist die beste Sprache von der Welt!
auf der welt, auf
-
Entschuldige Artchi, du hast natürlich Recht. Die Meldungen des Visual Studio Compilers sind sogar noch aussagekräftiger
--------------------Configuration: fsdfsds - Win32 Release-------------------- Compiling... fsdfsds.cpp C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(542) : error C2784: '_D __cdecl std::operator -(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce temp late argument for 'const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::c har_traits<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(542) : error C2784: '_D __cdecl std::operator -(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce temp late argument for 'const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::c har_traits<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(542) : error C2784: '_D __cdecl std::operator -(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce temp late argument for 'const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::c har_traits<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(542) : error C2784: '_D __cdecl std::operator -(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce temp late argument for 'const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::c har_traits<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(542) : error C2676: binary '-' : 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<ch ar,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' does not define this operator or a conversion to a type acceptable to the predefined operator C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E)' : could not deduce template argument for 'const cla ss std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<cha r> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E)' : could not deduce template argument for 'const cla ss std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<cha r> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E)' : could not deduce template argument for 'const cla ss std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<cha r> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E)' : could not deduce template argument for 'const cla ss std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<cha r> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E *)' : could not deduce template argument for 'const c lass std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<c har> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E *)' : could not deduce template argument for 'const c lass std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<c har> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E *)' : could not deduce template argument for 'const c lass std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<c har> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const _E *)' : could not deduce template argument for 'const c lass std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<c har> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const _E,const class std::basic_string<_E,_Tr,_A> &)' : could not deduce template argument for 'const ' f rom 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const _E *,const class std::basic_string<_E,_Tr,_A> &)' : could not deduce template argument for 'const *' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const class std::basic_string<_E,_Tr,_A> &)' : could not deduc e template argument for 'const class std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_tra its<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const class std::basic_string<_E,_Tr,_A> &)' : could not deduc e template argument for 'const class std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_tra its<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const class std::basic_string<_E,_Tr,_A> &)' : could not deduc e template argument for 'const class std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_tra its<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const class std::basic_string<_E,_Tr,_A> &)' : could not deduc e template argument for 'const class std::basic_string<_E,_Tr,_A> &' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_tra its<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> __cdecl std::operator +(_D,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce template arg ument for '' from 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2676: binary '+' : 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<ch ar,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' does not define this operator or a conversion to a type acceptable to the predefined operator C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2780: 'void __cdecl std::_Insertion_sort(_RI,_RI,_Pr)' : expects 3 arguments - 2 provided C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(619) : see declaration of '_Insertion_sort' C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(547) : error C2676: binary '+=' : 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<c har,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' does not define this operator or a conversion to a type acceptable to the predefined operator C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : see reference to function template instantiation 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::a llocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)' being compiled Error executing cl.exe. fsdfsds.obj - 23 error(s), 0 warning(s)
-
/fricky schrieb:
Artchi schrieb:
Achja: Java ist die beste Sprache von der Welt!
auf der welt, auf
Auf der Erde, in der Welt. Von der Welt ist aber auch ok. Nur auf ist schlecht.
http://de.wikipedia.org/wiki/Welt
-
C++ Rocks schrieb:
fsdfsds.obj - 23 error(s), 0 warning(s)
23 errors? sieht irgendwie nach viel mehr aus.
-
Grandiose Fehlermeldungen. Irgendwas macht mein Compiler besser
E:\test>bcc32 test.cpp CodeGear C++ 6.13 f³r Win32 Copyright (c) 1993-2008 CodeGear test.cpp: Fehler E2093 E:\Programme\Tiburon\Include\dinkumware\algorithm 2062: 'operator-' ist im Typ 'list<string,allocator<string> >::iterator' für Argumente desselben Typs nicht implementiert in Funktion std::void sort<list<string,allocator<string> >::iterator>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator) Fehler E2285 E:\Programme\Tiburon\Include\dinkumware\algorithm 2062: Keine Übereinstimmung f³r '_Sort<_RanIt,_Diff,_Pr>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator,undefined)' gefunden in Funktion void sort<list<string,allocator<string> >::iterator>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator) *** 2 Fehler bei der Compilierung ***
Was natürlich nichts am grundsätzlichen Problem ändert - der Fehler sollte im Anwendercode auftauchen und nicht in irgendeinem Template in der Standardbibliothek. Dafür bräuchte man Concepts - aber daraus wird ja nichts. Mit erweiterten Fehlerinformationen wird es immerhin ein wenig besser:
E:\test>bcc32 -Q test.cpp CodeGear C++ 6.13 für Win32 Copyright (c) 1993-2008 CodeGear test.cpp: Fehler E2093 E:\Programme\Tiburon\Include\dinkumware\algorithm 2062: 'operator-' ist im Typ 'list<string,allocator<string> >::iterator' für Argumente desselben Typs nicht implementiert in Funktion std::void sort<list<string,allocator<string> >::iterator>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator) + Vollständiger Parser-Kontext + test.cpp, line 6: Analyse von: void foo(list<string,allocator<string> > &) + test.cpp, line 7: Entscheidung zum Instantiieren: void std::void sort<list<string,allocator<string> >::iterator>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator) + --- Zurücksetzen des Parser-Kontexts für die Instantiierung... + test.cpp, line 3: #include E:\Programme\Tiburon\Include\dinkumware\algorithm + E:\Programme\Tiburon\Include\dinkumware\algorithm, line 6: namespace std Fehler E2285 E:\Programme\Tiburon\Include\dinkumware\algorithm 2062: Keine Übereinstimmung für '_Sort<_RanIt,_Diff,_Pr>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator,undefined)' gefunden in Funktion void sort<list<string,allocator<string> >::iterator>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator) + Vollständiger Parser-Kontext + test.cpp, line 6: Analyse von: void foo(list<string,allocator<string> > &) + test.cpp, line 7: Entscheidung zum Instantiieren: void void sort<list<string,allocator<string> >::iterator>(list<string,allocator<string> >::iterator,list<string,allocator<string> >::iterator) + --- Zurücksetzen des Parser-Kontexts für die Instantiierung... + test.cpp, line 3: #include E:\Programme\Tiburon\Include\dinkumware\algorithm + E:\Programme\Tiburon\Include\dinkumware\algorithm, line 6: namespace std *** 2 Fehler bei der Compilierung ***
-
C++ Rocks!
http://msdn.microsoft.com/de-de/library/wf867f8f(VS.80).aspx
http://msdn.microsoft.com/de-de/library/sah8k6f4(VS.80).aspxSpätestens beim zweiten Error-Code weiß man, das da was nicht zusammen passt. Dann schaut man in die Std-Lib-Doku, und weiß das list eine eigene Sort-Funktion bereitstellt.
Den Fehler begeht denke ich mal jeder Std-Lib-Anwender in seiner Anfangszeit. Den Fehler hatte ich damals auch gemacht, std::sort() mit list anwenden zu wollen. Nach einem Blick in der Doku habe ich das nach ein paar Sekunden korrigiert bekommen. Vorausgesetzt man weiß das es unterschiedliche Iterator-Kategorien gibt. Das sind aber C++-Basics!
-
wenn das basics sind, möchte ich ja nicht wissen mit was für fehlermeldungen sich der fortgeschrittene C++ programmierer so herumschlagen muß^^
-
C++ Rocks schrieb:
Entschuldige Artchi, du hast natürlich Recht. Die Meldungen des Visual Studio Compilers sind sogar noch aussagekräftiger
... std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' ...
28 KB Fehlermeldung
auf diesem Platz könnte man in Forth ein Betriebssystem programmieren, inkl. Compiler ... alternativ *n*x fahren, die PDP 11/20 hatte 1971 ungefähr so viel Speicher im Vollausbau
-
mukuh schrieb:
wenn das basics sind, möchte ich ja nicht wissen mit was für fehlermeldungen sich der fortgeschrittene C++ programmierer so herumschlagen muß^^
Fehlermeldungen? Schön wärs
-
C++ Rocks schrieb:
basti431 schrieb:
Aber nur so am rande. Warum ist cout so viel umständlicher als printf? Ich merke nur das es durch die vielen "<<" hässlicher ist
C
printf("(%8.2f,%8.2f)\n", x, y);
C++
std::cout << "(" << std::setprecision(2) << std::setiosflags(std::ios::fixed) << std::setw(8) << x << "," << std::setw(8) << y << ")" << endl;
Also ich finde den C++ Code weitaus intuitiver und übersichtlicher!
Ist doch interessant dass der kurze formatstring "(%8.2f,%8.2f)\n" ganze zwei Zeilen c++ code ersetzt.
Das nenne ich mal minimalen Aufwand: Man braucht nur:
cout, setprecision, setiosflags, ios::fixed, setw und 674594 '<<'s und schon hat man den format string ersetzt.Diese Diskussion printf vs cout erinnert mich an folgendes Beispiel: Wegbeschreibung.
C: Mit printf bekommt man die Wegbeschreibung in Form einer Karte, auf der man auf einen Blick alles überblicken kann.
C++: Hier wird der weg manuell beschrieben ala "gehe gerade aus << drehe dich nach links << schau dich um ob kein Gegenverkehr kommt << fahre dann 40 meter << im Kreisverkehr die zweite raus [...]"
Also cout muss wohl ein wahren Pragmatiker entworfen haben.
-
Ist aber total irrelevant. Willst Du süße Formatierung, nimmst Du eh Klickibunti.
Genauso die Länge mancher Fehlermeldungen. Die fallen in der Praxis gar nicht auf.
-
volkard schrieb:
Genauso die Länge mancher Fehlermeldungen. Die fallen in der Praxis gar nicht auf.
weils sie sowieso keiner liest. angeblich gibt's sogar tools, die fehler eines C++ compilers in menschenlesbare form übersetzen können (in eine zeile oder so).