[Spiel] Findet die Fehler ...
-
ich frag mich grad: ist der Fehler den ich seh ein echter ernstgemeinter fehler, oder einfach nur ein "ausm kopf falsch aufschreiber"?
//edit ok, es war letzteres
-
Ja, ja,...
-
hübsch. kommt auch mal was, bei dem man nachdenken muss?
-
camper schrieb:
hübsch. kommt auch mal was, bei dem man nachdenken muss?
Ja kommt noch, aber denke mal etwas zu finden was dir nicht einfach erscheint wird schwer
-
KasF schrieb:
camper schrieb:
hübsch. kommt auch mal was, bei dem man nachdenken muss?
Ja kommt noch, aber denke mal etwas zu finden was dir nicht einfach erscheint wird schwer
3 Seiten rekursive templates sollten ausreichen um ein fehlendes ";" zu übersehen
-
#include <stdio.h> typedef unsigned char u;u m[1024],g[1024],e[1024],b[1024];int n,v,d,z,S=129;a( u *x,u *y,int o){d=0;for(v=S;v--;){d+=x[v]+y[v]*o;x[v]=d;d=d>>8;}}s(u *x){for( v=0;(v<S-1)&&(x[v]==m[v]);)v++;if(x[v]>=m[v])a(x,m,-1);}r(u *x){d=0;for(v=0;v< S;){d|=x[v];x[v++]=d/2;d=(d&1)<<8;}}M(u *x,u *y){u X[1024],Y[1024];bcopy(x,X,S );bcopy(y,Y,S);bzero(x,S);for(z=S*8;z--;){if(X[S-1]&1){a(x,Y,1);s(x);}r(X);a(Y ,Y,1);s(Y);}}h(char *x,u *y){bzero(y,S);for(n=0;x[n]>0;n++){for(z=4;z--;)a(y,y ,1);x[n]|=32;y[S-1]|=x[n]-48-(x[n]>96)*39;}p(u *x){for(n=0;!x[n];)n++;for(;n< S;n++)printf("%c%c",48+x[n]/16+(x[n]>159)*7,48+(x[n]&15)+7*((x[n]&15)>9)); printf("\n");}main(int c,char **v){h(v[1],g);h(v[2],e);h(v[3],m);bzero(b,S);b[ S-1]=1;for(n=S*8;n--;){if(e[S-1]&1)M(b,g);M(g,g);r(e);}p(b);}
-
Bittesehr
namespace kasf { class Super { private: int tt; public: Super() : tt(4) { } Super(int z) : tt(z) { } int get() const { return tt; } }; class MyClass { private: int tau; public: MyClass() : tau(12345) { } MyClass(int z) : tau(z) { } MyClass(const MyClass& obj) : tau(obj.tau) { } MyClass(const Super& obj) : tau(obj.get()) { } int get() const { return tau; } class OTTO { public: unsigned long get() const { return 0xDEAD; } }; int add(int val) { return tau + val; } int add(const Super& sup) { return tau + sup.get(); } friend ostream& operator<<(ostream& stream, const MyClass& obj); }; ostream& operator<<(ostream& stream, const MyClass& obj) { stream << obj.tau; return stream; } int add(unsigned long t,const MyClass::OTTO& obj) { return obj.get() + t; } int add(unsigned long t,const Super& obj) { return obj.get() + t; } } int add(unsigned long t,const kasf::MyClass::OTTO& obj) { return obj.get() + t + t; } int add(unsigned long t,const kasf::Super& obj) { return obj.get() + t + t; } int main() { kasf::MyClass a; kasf::MyClass b = kasf::Super(), c(kasf::Super()), d(b); cout << kasf::MyClass() << endl << a << endl << b.get() << endl; kasf::MyClass::OTT0 otti; add(0xBEEF, kasf::MyClass::OTTO() ); cout << kasf::MyClass(44) << endl << c << endl << d.add(5) << endl; }
Edit: Sagt mir wieviel Fehler ihr findet
Edit2: Nochmal war reingebaut
-
otze schrieb:
3 Seiten rekursive templates sollten ausreichen um ein fehlendes ";" zu übersehen
Da wären vllt noch eins zwei Sachen wo camper vielleicht nicht direkt draufkommen würde :). Beim letzen Beispiel sind ja nur bekannte Sachen, obwohl ich denke das ihr einen übersehen werdet
und einer aber echt übel fies ist
Den fiesen löse ich deshalbt auch jetzt schonmal auf:
kasf::MyClass::OTT0 otti; // Fehler
Denn das letzte O bei OTTO ist eine NULL und kein O.
-
Muss ich jetzt auflösen, bevor einer geantwortet hat
-
Hat der Fehler irgendwas mit Koenig Lookup zu tun?
-
CStoll schrieb:
Hat der Fehler irgendwas mit Koenig Lookup zu tun?
Ja, einer.
-
KasF schrieb:
CStoll schrieb:
Hat der Fehler irgendwas mit Koenig Lookup zu tun?
Ja, einer.
einer? also ich hab keinen fehler gesehen (bis auf den otto-verschreiber), bis cstoll eben koenig lookup erwähnt hat. nachgeguckt und nu seh ich genau einen fehler.
-
Komisch, jetzt finde ich den Fehler, den ich oben im Sinn hatte, nicht mehr wieder. Aber dafür ist mir ein anderer aufgefallen in Zeile 78 (hoffe ich).
-
CStoll schrieb:
Komisch, jetzt finde ich den Fehler, den ich oben im Sinn hatte, nicht mehr wieder. Aber dafür ist mir ein anderer aufgefallen in Zeile 78 (hoffe ich).
-
der fehler durch koenig lookup ist in zeile 83.
-
Achja, das waren auch schon beide:
1.)
c(kasf::Super())
wird als Funktionsdeklaration gesehen:
http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.19
http://www.gotw.ca/gotw/075.htm2.)
add(0xBEEF, kasf::MyClass::OTTO() );
der Aufruf ist Mehrdeutig da auch die add's im Namespace kasf berücksichtigt werden:
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Koenig#Answ
-
ajcPanther schrieb:
Bis dahin mal was einfaches, sind ja nich nur cracks hier
:
template<class tBase> struct Asp { void MyFunc(typename tBase::tType t_) { cout << t_ << endl; } }; struct Comp : public Asp<Comp> { typedef int tType; }; int main() { Comp MyComp; MyComp.MyFunc(23); }
c ya, cPanther
Der Fehler ist doch hier der das bei der Instanzierung Asp<Comp> hier oben dann
void MyFunc(typename tBase::tType t_)
Comp::tType gar nicht bekannt ist oder ? Wenn ja, wie löst man das Problem schön.
otze schrieb:
ich frag mich grad: ist der Fehler den ich seh ein echter ernstgemeinter fehler, oder einfach nur ein "ausm kopf falsch aufschreiber"?
//edit ok, es war letzteres
Verstehe ich auch nicht irgendwie dazu.
Aufklärung bitte
*das Beispiel hat mich schon verrückt gemacht*
-
KasF schrieb:
ajcPanther schrieb:
Bis dahin mal was einfaches, sind ja nich nur cracks hier
:
template<class tBase> struct Asp { void MyFunc(typename tBase::tType t_) { cout << t_ << endl; } }; struct Comp : public Asp<Comp> { typedef int tType; }; int main() { Comp MyComp; MyComp.MyFunc(23); }
c ya, cPanther
Der Fehler ist doch hier der das bei der Instanzierung Asp<Comp> hier oben dann
void MyFunc(typename tBase::tType t_)
Comp::tType gar nicht bekannt ist oder ? Wenn ja, wie löst man das Problem schön.
Ohne Garantie - mit dem Schlüsselwort typename sagt man dem Compiler, daß sich hinter tBase::tType ein Typ verstecken soll - ob das wirklich so ist, prüft der Compiler, wenn er tBase kennt.
otze schrieb:
ich frag mich grad: ist der Fehler den ich seh ein echter ernstgemeinter fehler, oder einfach nur ein "ausm kopf falsch aufschreiber"?
//edit ok, es war letzteres
Verstehe ich auch nicht irgendwie dazu.
Aufklärung bitte
Dort stand ursprünglich
struct Comp : public Asp<Arg>
-
Ahh, danke für die Aufklärung.
Heute Abend kommt bissl was mit Vererbung, Polymorphie oder Exceptions ...
-
Schon spät geworden
class MyClass { private: // Kopieren verhindern, um sicherzugehen das aus // Performancegründen MyClass nur als Referenz oder Zeiger übergeben wird MyClass(const MyClass& obj) { } string error; public: MyClass() : error("") { } void setErr(const string& err) { error = err; } const string& what() const { return error; } }; void yuhu(MyClass a) { cout << "Nochmal Glück gehabt :)" << endl; } bool func(const MyClass& obj) { bool ohh[2] = { false, true }; srand(time(NULL)); random_shuffle(ohh,ohh+2); MyClass t(MyClass(obj)); cout << t.what() << endl; return ohh[0]; } int main() { try { MyClass a, z; a = z; bool ups = func(a); if(ups) { a.setErr("Böser Fehler"); throw a; } yuhu(z); }catch(const MyClass& err) { cout << err.what() << endl; } }
Wieder mehr als ein Fehler ...