präprozessor



  • mein problem:

    ich habe eine modelklasse die vom mehreren programmen genutzt wird oder werden soll nun brauch die klasse einige zusätzliche methoden, die aber nur ein prog benötigt, ich dacht mir ich löse das ganze mit präprozesser aufrufen allerdings mache ich etwas falsch.

    // main.cpp
    #define MILKSHAPE_CONVERTER
    
    #include "milkshape.h"
    #include "../woanders/src/model.h"
    
    // model.h
    #ifndef __MODEL_H
    #define __MODEL_H
    
    // weitere includes
    
    #ifdef MILKSHAPE_CONVERTER
       #include "../../ms3d2mml/milkshape.h"
    #endif
    
    class CModel
    {
        public:
            CModel();
            ~CModel();
    
    		void Load(std::string szFilename);
    
    #ifdef MILKSHAPE_CONVERTER
    		void Convert(CMilkshapeModel &Milkshape);
    		void Write(std::string szFilename);
    #endif
    };
    #endif
    

    MILKSHAPE_CONVERTER ist nicht definiert. warum 😕 oder ist mein weg ganz falsch 😕



  • miller_m schrieb:

    MILKSHAPE_CONVERTER ist nicht definiert. warum 😕 oder ist mein weg ganz falsch 😕

    kannst du das denn nicht mir vererbung loesen? bzw. mit ner non-member funktion?
    bzw. was spricht dagegen die sachen in die klasse zu uebernehmen?



  • Shade Of Mine schrieb:

    kannst du das denn nicht mir vererbung loesen? bzw. mit ner non-member funktion?
    bzw. was spricht dagegen die sachen in die klasse zu uebernehmen?

    eigentlich nix 😃 ok dann erbe ich davon. dank dir



  • miller_m schrieb:

    // model.h
    #ifndef __MODEL_H
    #define __MODEL_H
    

    btw: Führende Unterstriche bei globalen Symbolen sind der Implementierung vorbehalten; das heißt, du darfst sowas nicht benutzen.



  • @cd9000
    das ist ein privileg und keine vorschrift



  • btw: Führende Unterstriche bei globalen Symbolen sind der Implementierung vorbehalten; das heißt, du darfst sowas nicht benutzen.

    Ich dachte das gilt nur wenn diese auch mit doppelten Unterstrichen aufhören.

    @miller_m: Schreib es einfach groß.



  • cd9000 schrieb:

    btw: Führende Unterstriche bei globalen Symbolen sind der Implementierung vorbehalten; das heißt, du darfst sowas nicht benutzen.

    wo kann ich das nachlesen 😕



  • im C++ Standard / 17.4.3.1
    bezeichner mit doppelten underscore am anfang sowie mit einem underscore gefolgt von einem großbuchstaben sind für die implementation für jeglichen gebrauch reserviert.
    bezeichner mit einem underscore gefolgt von einem kleinbuchstaben nur für den globalen namespace.



  • danke, ich werde mal nachlesen.



  • davie schrieb:

    bezeichner mit doppelten underscore am anfang

    sicher?
    Ich hab den Standard gerade nicht bei der Hand - aber ist es nicht so, dass alle Bezeichner mit 2 unterstrichen der Implementierung gehören?


Anmelden zum Antworten