Maar je schrijft zoiets als "... eigenlijk een interface definitie ..." Als professioneel C++ programmeur met bijna 30 jaar ervaring in dat "taaltje" zou ik zeggen: Gebruik het onvolprezen (en vaak niet begrepen) C++ mechanisme van multiple inheritance! Het Java en C# concept van Interfaces is daar direct van afgeleid en werkt in C++ met multiple inheritance nagenoeg identiek aan wat je in Java gewend bent met Interfaces. Een extra plus daarbij is, dat je in tegenstelling tot het Interface concept ook al een, deel van, de implementatie mag en kunt schrijven. Iets dat de "moderne" talen pas sinds ca. 2 jaar kunnen met hun "default methods" in Interfaces Wel is het dan natuurlijk slim kiezen van de methodes die je Virtual wilt/moet maken.
Hoe bedoel je? Kan je een voorbeeld geven?
Wat voor vervanging heb je in C++ eigenlijk voor een switch case.
Bedoel je zoiets als dit
void switch2(const Key_t& key, const std::vector<std::pair<Key_t, std::function<void()>>>& pairs, const std::function<void()>& def){ std::unordered_map<Key_t, std::function<void()>> dict; for (const auto& entry : pairs) dict.insert(entry); assert(dict.size() == pairs.size()); const auto it = dict.find(key); if (it != dict.end()) it->second(); else def();...{ std::string input; std::cin >> input; switch2(input, { {"hi", defer(say, "hey")}, {"whazzup", defer(say, "wazzuuuup")}, {"bye", defer(quit, "see ya", &running)}}, defer(say, "wat?")); }}
Je wilt niet weten hoeveel weerstand dit opgeroepen heeft.
if(x < 5) { if(y > 6) { doeIets(); if(z == 7) { doeIetsAnders(); } } helloWorld(); }
Ik heb ooit een Coding standaard geschreven voor mijn team programmeurs, om te trachten dit voormekaar te krijgen. Je wilt niet weten hoeveel weerstand dit opgeroepen heeft.
Van GCC mag het wel. Van mijn C-compiler mag het niet
En waarom vind je een switch case 'zwak' in C++.
C. Je programma niet onnodig groot wordt qua geheugen gebruik.
Dan waarom een trap van sluit accolades maken?
if(x < 5) { if(y > 6) { doeIets(); if(z == 7) { doeIetsAnders(); } helloWorld(); } }
Yep, het blijft verwonderlijk dat zoiets simpels als een indentatie stijl zoveel weerstand kan oproepen.
#include <stdio.h>#define f(f,g){z e=0;for(;e<f;e++)g;}#define i(f,g)static z f(z a){return g;}#define j(f,g)static void f(z*a,z*b,z*c){g}#define h(f,g)static z f(z a,z b,z c){return g;}#define g(f,g,h,i,j)static z f(z b){z a=g,c=h;for(;i)a=j;return a;}typedef unsigned char y;typedef unsigned long long z;extern y*w;static z b(z a,z b){return a>>b|a<<(64-b);}i(_,(a>>6)^b(a,61)^b(a,19))i(_a,b(a,39)^b(a,28)^b(a,34))h(x,((a^b)&c)^(a&b))i(u,b(a,41)^b(a,18)^b(a,14))h(t,(((((3*(a*c+b*b)>>9)+(3*b*c>>32))*a>>21)+(3*a*a*b>>6)+((b>>4)*(b>>4)*b>>46))>>18)+a*a*a)h(m,t((b<<16)|(c>>48),(c>>24)%(1<<24),c%(1<<24))>>48<a)h(s,(a&b)^(~a&c))i(r,b(a,1)^b(a,8)^(a>>7))g(o,0,0,c<8;c++,a*256+w[b*8+c])g(d,0,0,c<13;c++,a*31+w[b*13+c]-96)g(p,0,4,c;c/=2,a|c*m(b,a|c,a))g(q,0,1ull<<63,c;c/=2,a|c*m(b,p(b),a|c))g(v,b>1,2,c<b;c++,a&&b%c)g(l,b?l(b-1)+1:2,a,!v(c);c++,c+1)j(n,z d=a[7]+u(a[4])+s(a[4],a[5],a[6])+q(l(*b))+c[*b%16];f(8,a[7-e]=e-3?e-7?a[6-e]:d+_a(a[0])+x(a[1],a[2],a[3]):d+a[3])f(16*(*b%16>14),c[e]+=c[(e+9)%16]+r(c[(e+1)%16])+_(c[(e+14)%16])))j(k,f(8,b[e]=a[e])f(80,n(a,&e,c))f(8,a[e]+=b[e]))int main(){z a[8],b[8],c[16];f(8,a[e]=d(e))f(16,c[e]=e-15?o(e):d(8))k(a,b,c);f(16,c[e]=e?e-15?0:11264:1ull<<63)k(a,b,c);f(8,printf("%016llx%s",a[e],e-7?"":"\n"))return!w;}y*w=(y*)"crsmyiajqhwy{unwa|hjoi`hlxhpxrzb~edko~rtr~ileqyjk`znqgsuitvgqnfdfa||wedvnmhozkpokootqzcexeld~oibqzpcsuw{ib{x`m`hsa`jmn}wcfzpb";
Maar dan kan wel voor "irritaties"zorgen als er meerdere mensen aan moeten werken
2 of 4 spaties?