Hej, Jeg har gået og skumlet over et problem jeg har haft med templates i en ret advanceret løsning til at binde et script sprog sammen med c++ som jeg har lavet. Mit problem er at jeg har nogen metoder som retunerer void som skal bindes og nogen som retunerer int som skal bindes på forskellig måde fordi void ikke er en type. Spm er så om man kan omskring det flg. eksempel så det fungerer efter nogenlunde samme hensigt eller måske kan snyde parseren med på en eller anden måde eller bruge nogen præprocessor macroes istedet for?
class SomeClass { public: SomeClass() {} void memberRetVoid() { return; } int memberRetInt() { return 0; } };
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
GCC, BorlandC og DMC kompilerer og giver det rette resultat for: std::cout << (isVoidReturn( &c, &SomeClass::memberRetInt ) ? "void" : "int") << std::endl; std::cout << (isVoidReturn( &c, &SomeClass::memberRetVoid ) ? "void" : "int") << std::endl;
VisualC++ 6.0 vil ikke kompile den anden linie :-( Men den er ikke kendt for at være særlig god til at overholde standarden, så jeg tror at det er de andre der har ret.
Men er det ikke lettere at få alle funktioner til at returnere en int?
Jeg kan desværre ikke bruge typeid fordi det skal fungerer på 'template niveau'.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.