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

Przekazywanie parametrów i/o/fstream do funkcji

Object Storage Arubacloud
0 głosów
1,037 wizyt
pytanie zadane 8 maja 2016 w C i C++ przez Lithium Nowicjusz (120 p.)

Hej, napisałem prosty program wczytujący dane z dwóch plików (funkcja będzi częścią czegoś większego więc częśc kodu może się wydawac niepotrzebna ;)). Nie jestem w stanie przekazac referencji tab1 i tab2 do funkcji.

 

int dat[4];
ifstream tab1, tab2;
int *v = dat;


int main()
{
	tab1.open("testing\\tab1.txt");
	tab2.open("testing\\tab2.txt");

	ver(v, tab1, tab2);
	system("pause");
	return 0;
}


int ver(int *s, ifstream& t1, ifstream& t2)

	if (t1.good() == false)
	{
		cout << "Nie udało sie wczytac pliku." << endl;
		Sleep(1000);									
		exit(0);											
        }


	t1 >> *s;
	t1 >> *(s+1);
	cout << "Liczba wierszy: " << *s << endl << "Liczba kolumn: " << *(s+1) << endl;
	t1.close();																		


	if (t2.good() == false)
	{
		cout << "Nie udało sie wczytac pliku." << endl;	
		Sleep(1000);									
		exit(0);										
	}

	t2 >> *(s+2);
	t2 >> *(s+3);
	cout << "Liczba wierszy: " << *(s+2) << endl << "Liczba kolumn: " << *(s+3) << endl;
	t2.close();																			
	if (*(s+1) == *(s+2)) cout << "Mnozenie jest mozliwe." << endl;		
	else cout << "Mnożenie macierzy nie jest mozliwe" << endl;	
	_getch();
	return 0;
}

 

komentarz 8 maja 2016 przez draghan VIP (106,230 p.)

Nie jestem w stanie przekazac referencji tab1 i tab2 do funkcji.

Czyli co konkretnie? Podaj komunikat błędu, opis objawów błędu, cokolwiek konkretnego...

2 odpowiedzi

0 głosów
odpowiedź 8 maja 2016 przez Patrycjerz Mędrzec (192,320 p.)
A po co przesyłać, jeśli podane obiekty są globalne?
komentarz 8 maja 2016 przez Lithium Nowicjusz (120 p.)
Bo niekoniecznie zostaną później globalne. I niekoniecznie będę miec do czynienia wyłącznie ze zmiennym fstream zadeklarowanymi globalnie.
komentarz 8 maja 2016 przez Patrycjerz Mędrzec (192,320 p.)
A problem nie jest związany z brakiem deklaracji funkcji przed jej wywołaniem?
0 głosów
odpowiedź 8 maja 2016 przez Radfler VIP (101,030 p.)

A zadeklarowałeś funkcję przed jej wywołaniem?

int ver(int *s, ifstream& t1, ifstream& t2); // deklaracja jest wymagana

int main()
{
    tab1.open("testing\\tab1.txt");
    tab2.open("testing\\tab2.txt");
 
    ver(v, tab1, tab2);
    system("pause");
    return 0;
}

 

komentarz 8 maja 2016 przez Lithium Nowicjusz (120 p.)

Jest zadeklarowana w pliku nagłowkowym. Sama funkcja tez jest w osobnym pliku.

#pragma once
int ver(int *s, ifstream& t1, ifstream& t2);
int allocate(int *s);

 

komentarz 8 maja 2016 przez Radfler VIP (101,030 p.)
Podaj treści błędów kompilacji...
komentarz 8 maja 2016 przez Lithium Nowicjusz (120 p.)

"syntax error : identifier 'ifstream'" - przy deklaracji

"'ver': function does not take 3 arguments"

Brzmi tak jakby problem był właśnie z deklaracją, ale nie widzę błędu.

1
komentarz 8 maja 2016 przez Radfler VIP (101,030 p.)

Inkludujesz <fstream> w pliku nagłówkowym? Masz tam deklarację using? Jak to nie pomoże to podaj zawartość pliku z deklaracją.

komentarz 8 maja 2016 przez Lithium Nowicjusz (120 p.)
#pragma once

#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <fstream>
#include <iostream>
#include <windows.h>
#include "tools.h" //deklaracje funkcji

using namespace std;

 

1
komentarz 8 maja 2016 przez Radfler VIP (101,030 p.)

Miał być plik z deklaracjami, a tu żadnych deklaracji nie widzę... Pokaż "tools.h".

Podobne pytania

0 głosów
1 odpowiedź 308 wizyt
0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 17 stycznia 2017 w C i C++ przez BeSSeSSt Obywatel (1,190 p.)
0 głosów
4 odpowiedzi 2,663 wizyt
pytanie zadane 19 lipca 2016 w JavaScript przez Madar Obywatel (1,560 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 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!

...