Domanda Risolto Includere un intestazione contenente della variabili (globali) in tutto il progetto

DanyDollaro

Utente Electrum
14 Luglio 2018
148
41
58
138
Salve a tutti :), come dal titolo ho questo progetto contenente 2 sorgenti (.cpp) e 2 intestazioni (.h) che enumererò qui sotto:

Varh.h
C++:
#pragma once
int Var = 10;

VarFunc.h
C++:
#pragma once
int half(int Var);

VarFunc.cpp
C++:
#include "Varh.h"
int half() { return Var / 2; }

Main.cpp
C++:
#include <iostream>
// #include "???"

int main()
{
    std::cout << Var << '\n' << half(Var);
}

Quello che sto cercando di fare è: includedere nel main sia la funzione half() sia la variabile Var ma tutti i metodi che io abbia provato è finito con la doppia definizoione della variabile Var :\.
Quindi, sapreste dirmi cosa dovrei includere nel sorgente contenente il main per rendere ciò possibile?
 
C++:
// Varh.h (file da modificare)
#pragma once 
extern int Var;

// Varh.cpp (nuovo file da creare)
int Var = 10;

// VarFunc.h (giusto com'era)
#pragma once
int half(int Var);

// VarFunc.cpp (file da modificare: errore di distrazione?)
#include "Varh.h"
int half(int Var) { return Var / 2; }  

// Main.cpp (file da modificare: include)
#include <iostream>
#include "Varh.h"
#include "VarFunc.h"

int main()
{
    std::cout << Var << '\n' << half(Var);
    return 0;
}
 
Ti ringrazio per la risposta St3eve :), ma purtroppo questo non è un errore di distrazione:
// VarFunc.cpp (file da modificare: errore di distrazione?) #include "Varh.h" int half(int Var) { return Var / 2; }
la funzione half() deve restituire esattamente il valore di Var fratto 2, non deve essere passato un intero come parametro, compilandolo nel tuo modo funziona ma non esattamente quello che voglio, ci sono modi per rendere la variabile Var a tutti gli effetti accessibile da qualsiasi parte di questo progetto?
 
Allora l'errore di distrazione (concettuale?) è questo:
C++:
// VarFunc.h (file da modificare: errore di distrazione?)
#pragma once
int half();

// VarFunc.cpp (giusto com'era)
#include "Varh.h"
int half() { return Var / 2; }

// Main.cpp
std::cout << Var << '\n' << half(); // half non ha bisogno di un parametro
Per il resto valgono le modifiche che ti ho detto nel post precedente.
 
  • Mi piace
Reazioni: DanyDollaro
Oh! Non ci avevo fatto caso che nell`uso della funzioine e nella dichiarazione ci avevo inserito erroneamente un parametro ahahahaha, grentilissimo St3ve :D.