Ciao a tutti, il mio problema è molto semplice:
In Xcode, sto facendo un progetto per l'università, in c++, e ho diviso il programma nel classico MAIN.CPP, HEADER.H, FUNZIONI.CPP. Ora, non mi da errori sintattici, ma a run del programma succede che le funzioni non le trova, dicendomi che nel file .o del main non ci sono. Vi scrivo il codice così, potete avere un'idea.
//MAIN
#include "MatriceT.h"
int main(int argc, const char * argv[])
{
Matrice<int,5> M1(2,3);
Matrice<double,6> M2(1,4);
M1.AcquisciMatrice();
M2.AcquisciMatrice();
/*for(i=0;i<M1.getrighe();i++){
for(j=0;j<M1.getcolonne();j++)
cout<<i<<","<<j<<":"<<M1.leggimatrice(i,j)<<" ";
cout<<endl;
}*/
return 0;
}
//MatriceT.h
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
typedef int indice;
template<class T,int max>class Matrice
{
public:
typedef T tipoelem;
Matrice(indice,indice);
~Matrice();
void AcquisciMatrice();
void setrighe(indice);
void setcolonne(indice);
indice getrighe();
indice getcolonne();
//tipoelem leggimatrice(indice,indice);
void scrivimatrice(indice,indice,tipoelem);
private:
bool controlloindice(indice);
bool controllocasella(indice,indice);
indice righe;
indice colonne;
tipoelem **Mat;
};
//MatriceT.cpp
#include "MatriceT.h"
template <class T,int max> Matrice<T,max>::Matrice(indice r,indice c)
{
int i;
righe=r;
colonne=c;
Mat= new tipoelem* [r];
for(i=0;i<righe;i++)
Mat=new tipoelem [c];
}
template <class T,int max> Matrice<T,max>::~Matrice()
{
delete Mat;
}
template <class T,int max> void Matrice <T,max>::setrighe(indice r)
{
if(controlloindice(r))
righe=r;
else
righe=max;
}
template <class T,int max> void Matrice <T,max>::setcolonne(indice c)
{
if(controlloindice(c))
colonne=c;
else
colonne=max;
}
template <class T,int max> indice Matrice <T,max>::getrighe()
{
return righe;
}
template <class T,int max> indice Matrice <T,max>::getcolonne()
{
return colonne;
}
template <class T,int max> void Matrice <T,max>::scrivimatrice(indice r,indice c,tipoelem a)
{
if(controllocasella(r,c))
Mat[r][c]=a;
}
/*template <class T,int max> tipoelem Matrice<T,max>::leggimatrice(indice r,indice c)
{
if(controllocasella(r,c))
return Mat[r][c];
}*/
template <class T,int max> bool Matrice<T,max>::controllocasella(indice i,indice j)
{
if(i>max || j>max)
return false;
else
return true;
}
template <class T,int max> bool Matrice<T,max>::controlloindice(indice i)
{
if(i>max)
return false;
else return true;
}
template <class T,int max> void Matrice<T,max>::AcquisciMatrice()
{
int i,j;
tipoelem app;
for(i=0;i<getrighe();i++)
for(j=0;j<getcolonne();j++){
cout<<"Elemento["<<i<<"]["<<j<<"]:";
cin>>app;
scrivimatrice(i,j,app);
}
}
Sinceramente, so che c'è un problema in stack, perché viene compilato prima il main, quindi avrei bisogno di capire come fare.
GRAZIE PER L'ATTENZIONE.
Spero in una soluzione