• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Struktury oraz Pliki nagłówkowe

Object Storage Arubacloud
0 głosów
950 wizyt
pytanie zadane 20 kwietnia 2017 w C i C++ przez Niebieski_Zerg Użytkownik (610 p.)

Witam ostatnio chciałem rozbudować swój stary kod lecz mam problem ze strukturami w pliku nagłówkowym. Problemem jest CHYBA typ strukturalny, otóż gdy wszystko mam w jednym pliku (tym głównym, bez dodatków) wszystko działa, lecz gdy dzielę kod na kilka części wysypuje mi błędy. Używam Visual Studio.PS Program był dość obszerny ale nawet przy małej ilości kodu nie działa.


--Header.h--

struct WARTOSC
{
	float FM, FW;
}Dane;

WARTOSC Gaz(float V, float M, float W)

--Dodatek.cpp--

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cmath>
#include "Header.h"

WARTOSC Gaz(float V, float M, float W)
{
	float M = 5;
	float W =5;
	Dane.FM = static_cast<float>(M * (V * 0.001));
	Dane.FW = W  * Dane.FM;
	return Dane;
}

--Main.cpp--
 

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cmath>
#include "Header.h"
using namespace std;

int main()
{
	float V = 0, M = 0, W = 0, FP = 0, FM = 0;
	cout << "Podaj Objetosc pojemnika w litrach, Mase Gazu (kg/m^3)," << endl;
	cout << "oraz kalorycznosc gazu (MJ/kg)" << endl;
	cout << "Podaj wszystkie dane po kolei" << endl;
	cin >> V;
	cin >> M;
	cin >> W;
	Gaz(V, M, W);
	getch();
}


 

1 odpowiedź

+1 głos
odpowiedź 20 kwietnia 2017 przez Dexterim Dyskutant (8,370 p.)

Może jakieś komunikaty błędu?

Problem może być w tym, że zmianna Dane masz stworzona w pliku Header.h a nie w cpp

Może to pomoże:

http://stackoverflow.com/questions/18113854/defining-global-variables-between-two-cpp-files

Proponuje stowrzyć zmienną w pliku cpp.

I dodatkowo co do funkcji Gaz po co jej przekazujesz wartości M i W skoro potem i tak je przesłaniasz?

komentarz 20 kwietnia 2017 przez Niebieski_Zerg Użytkownik (610 p.)
Dzięki działa :D Co do zasłaniania zmiennych byłem już w amoku bo od kilku godzin szukania po Polskich forach nic nie znalazłem i pomyślałem że to pomoże ale jednak się myliłem. Jest jakiś sposób by nie dodawać zmiennej Dane do pliku.cpp np: poprzez extern czy coś?
komentarz 20 kwietnia 2017 przez Dexterim Dyskutant (8,370 p.)
Zawsze możesz ją stworzyć w pliku cpp
komentarz 21 kwietnia 2017 przez j23 Mędrzec (194,920 p.)

Jest jakiś sposób by nie dodawać zmiennej Dane do pliku.cpp np: poprzez extern czy coś?

Jeśli to ma być zmienna globalna, to definicja musi być w pliku źródłowym. Do pliku Header.h dodaj:

extern WARTOSC Dane;

Ale jeśli ta zmienna ma być użyta lokalnie, tak jak masz teraz w funkcji Gaz, po prostu zdefiniuj ją wewnątrz tej funkcji.

Podobne pytania

0 głosów
1 odpowiedź 92 wizyt
pytanie zadane 26 maja 2020 w C i C++ przez cba Użytkownik (620 p.)
0 głosów
3 odpowiedzi 278 wizyt
pytanie zadane 25 lipca 2016 w C i C++ przez itcloud Gaduła (3,380 p.)
0 głosów
2 odpowiedzi 278 wizyt
pytanie zadane 8 czerwca 2023 w C i C++ przez whiteman808 Obywatel (1,820 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...