Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    1

    [C] e [C++] Variabili globali static nell'header

    Buongiorno a tutti!
    Sto programmando in [C++] con Qt e sto realizzando una libreria che contenga variabili che poi dovranno essere riutilizzate nel main.cpp.
    Ho un attimo di confusione riguardo la definizione delle variabili ( per esempio di tipo "int") nell' header.
    Da quanto visto in rete e nelle varie slide di teoria e' riportato che per definire la variabile nell'header è sufficiente avere

    file del header lib.h :

    int birba;

    file del main:
    #include <iostream>
    #include "lib.h"
    using namespace std;


    birba =5;
    cout<<birba<<endl;



    il mimo cruccio sta nel fatto che il main non riesce a vedere "birba", per fare ciò è necessario definire la variabile come static ( quindi static int birba). Ma la direttiva static non la rende privata ???

    Grazie delle attenzioni!

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Il tuo esempio in realtà funziona (se ci metti un main) https://onlinegdb.com/SJyZf9lCW
    Ha tuttavia un grossissimo problema, se includi il file .h in più di un file la variabile risulterà definita più volte. Il modo corretto è dichiararla nel file .h e definirla in uno di quelli .cpp
    codice:
    //lib.h
    #ifndef _LIB_H
    #define _LIB_H
    extern int birb;
    #endif
    //lib.cpp
    #include "lib.h"
    int birb;
    //main.cpp
    #include <iostream>
    #include "lib.h"
    using namespace std;
    
    
    int main()
    {
        birb = 5;
        cout << birb;
    
    
        return 0;
    }
    https://onlinegdb.com/SyHV45eRb
    P.S. non ho idea di quanto durino i link a quel sito perché l'ho trovato ora, ma la stessa quantità di informazioni è presente nel testo di risposta.
    Ultima modifica di Scara95; 27-10-2017 a 13:11
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.