main.cpp:
#include <iostream>
#include <fstream>
#include <vector>
#include "Read.h"
usingnamespace std;
int main()
{
int n,m;
int ** M = 0;
ReadFromFile(n , m, M); //This is the line, where the linker complains
for (int i = 0;i < n;i++)
{
delete [] M[i];
}
delete [] M;
return 0;
}
Read.h:
1 2 3 4 5 6 7 8
#ifndef READ_H_INCLUDED
#define READ_H_INCLUDED
void ReadFromFile(int & n ,int & m , int ** &M);
#endif // READ_H_INCLUDED
#include "Read.h"
#include <iostream>
usingnamespace std;
void ReadFromFile(int & n ,int & m , int ** &M)
{
ifstream f;
string fn;
bool hiba;
cout << "A fajlnak a kovetkezokeppen kell kineznie: A szamokat szokozzel, vagy ujsor karakterrel kell elvalasztani. Az elso szam a kutyak szama, a masodik a kategoriak szama legyen. Utana pedig kutyankent fel kell sorolni, hogy melyik kategoriaban hany pontot kaptak." << '\n';
do{
hiba = false;
cout << "Add meg a fajl eleresi helyet/nevet !" << '\n';
cin >> fn;
//A program megpróbálja megnyitni a fájlt.
f.open(fn.c_str());
if (f.fail())
{
f.clear();
cout << "Nincs ilyen fajl !" << '\n';
hiba = true;
continue;
}
//Megpróbáljuk beolvasni az input adatok mennyiségét (ennek kell elsőnek lennie a fájlban).
if (!(f >> n) || (n <= 0))
{
f.close();
f.clear();
cout << "A fajl nem megfelelo !" << '\n';
hiba = true;
continue;
}
if (!(f >> m) || (m <= 0))
{
f.close();
f.clear();
cout << "A fajl nem megfelelo !" << '\n';
hiba = true;
continue;
}
M = newint *[n];
for (int i = 0;i < n;i++)
{
M[i] = newint[m];
}
//Megpróbáljuk vegigolvasni az inputsorozatot a fájlból.
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
if ( !(f >> M[i][j]) || (M[i][j] < 0) || (M[i][j] > 10) )
{
hiba = true;
cout << "A fajl nem megfelelo ! " << '\n';
break;
}
}
}
//Ha megvagyunk, bezárjuk a fájlt.
f.close();
f.clear();
}while(hiba);
}