Initialisierung



  • Hallo,

    habe eine x.h und eine x.cpp Datei.
    Möchte folgendes Initialisieren:

    xmlSAXHandler emptySAXHandlerStruct = {
    NULL, /* internalSubset /
    NULL, /
    isStandalone /
    NULL, /
    hasInternalSubset /
    NULL, /
    hasExternalSubset /
    NULL, /
    resolveEntity /
    NULL, /
    getEntity /
    NULL, /
    entityDecl /
    NULL, /
    notationDecl /
    NULL, /
    attributeDecl /
    NULL, /
    elementDecl /
    NULL, /
    unparsedEntityDecl /
    NULL, /
    setDocumentLocator /
    NULL, /
    startDocument /
    NULL, /
    endDocument /
    NULL, /
    startElement /
    NULL, /
    endElement /
    NULL, /
    reference /
    NULL, /
    characters /
    NULL, /
    ignorableWhitespace /
    NULL, /
    processingInstruction /
    NULL, /
    comment /
    NULL, /
    xmlParserWarning /
    NULL, /
    xmlParserError /
    NULL, /
    xmlParserError /
    NULL, /
    getParameterEntity /
    NULL, /
    cdataBlock; /
    NULL, /
    externalSubset; /
    1,
    NULL,
    NULL, /
    startElementNs /
    NULL, /
    endElementNs /
    NULL /
    xmlStructuredErrorFunc */
    };

    Wo initialisiere ich das? im header file oder in der cpp? 😕

    Danke!
    lg,
    shed



  • Ist das eine globale Variable? Möchtest du sie im Header extern deklarieren?
    Wenn global aber ohne extern, dann machs direkt im Header. Andernfalls in der .cpp

    Wenn es in einer Klasse steht, dann im Konstruktor.



  • Wenn ich das im Konstruktor machen will bekomm ich fehler:

    (x.h)

    class x
    {
    private:
    xmlSAXHandler emptySAXHandlerStruct;

    public:
    x() {
    this->emptySAXHandlerStruct = {NULL};
    }

    };

    Soll keine globale Variable sein, sonder zu der Klasse gehören.
    Danke!
    mfg,
    shed



  • Ich glaube

    {
    ZeroMemory(this->emptySAXHandlerStruct, siezof(xmlSAXHandler));
    }
    


  • Das war nur als beispiel gedacht...also ich schreibe mehrere Werte:

    this->emptySAXHandlerStruct = {NULL, NULL, NULL, NULL, NULL, NULL,...};

    kann ich das dann trotzdem machen bzw. ist das dann das gleiche?



  • bzw. genau gesagt soll das drinnen stehen, also kann ich es gar nicht mit ZeroMemory machen:

    this->emptySAXHandlerStruct = {NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 6...};



  • lass x
    {
    private:
    xmlSAXHandler emptySAXHandlerStruct;
    
    public:
    x() : emptySAXHandlerStruct(0){
    //und hier setzt du die einzelnen Werte die nicht 0 sind
    //und die Zuweisung mit der geschweiften Klammer funktioniert nur wenn du direkt 
    //initialisiert bei der Definition
    //Aber im Konstruktor ist die Variable längst erzeugt..
    //
    //Du solltest vielleicht mal ein Grundlagenbuch über C++ lesen
    }
    
    };
    

Anmelden zum Antworten