vendettaaaaa
08-06-2012, 22:27
Help :D
Sto cercando di compilare un programma che fa uso di alcune librerie esterne. Praticamente, ricevo errore qui:
void DaeSolver(BzzVectorInt& iDer, const BzzVector& relTol, const BzzVector& absTol, BzzVector& yMin, BzzVector& yMax,
const double& t0, const double& tOut, const double& tCritic, int& iState, BzzVector& y0)
{
int nEq = y0.Size();
// Initialize the output array
BzzVector y(nEq);
// Initialization of the Dae System object
BzzDae o(y0, t0, iDer, DyByDt);
All'ultima riga, mi dice "error C2664: cannot convert parameter 3 from BzzVectorInt& to BzzMatrixSparse&". Cioè, il compilatore non vede il costruttore che voglio usare io, sebbene sia ben presente nell'hpp:
// ============================================================================
// *****************************< constructors >*******************************
// ============================================================================
BzzDae(void)
:BzzDaeStiffBase(){};
BzzDae(BzzVector &y00,double t00,BzzMatrix &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f),
BzzMatrix &JJ);
BzzDae(BzzVector &y00,double t00,BzzMatrixSparse &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,AA,ptrSys);
}
void SetInitialConditions(BzzVector &y00,double t00,BzzMatrixSparse &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f));
void operator()(BzzVector &y00,double t00,BzzMatrixSparse &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,AA,ptrSys);
}
BzzDae(BzzVector &y00,double t00,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f),
void (*ptrJac)(BzzVector &yy,double tt,BzzMatrix &JJ));
BzzDae(BzzVector &y00,double t00,BzzVectorInt &iDer,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,iDer,ptrSys);
}
void SetInitialConditions(BzzVector &y00,double t00,BzzVectorInt &iDer,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f));
void operator()(BzzVector &y00,double t00,BzzVectorInt &iDer,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,iDer,ptrSys);
}
Evidenziato in rosso quello che il compilatore vede, in blu quello che voglio usare io.
Perchè??? :muro:
Sto cercando di compilare un programma che fa uso di alcune librerie esterne. Praticamente, ricevo errore qui:
void DaeSolver(BzzVectorInt& iDer, const BzzVector& relTol, const BzzVector& absTol, BzzVector& yMin, BzzVector& yMax,
const double& t0, const double& tOut, const double& tCritic, int& iState, BzzVector& y0)
{
int nEq = y0.Size();
// Initialize the output array
BzzVector y(nEq);
// Initialization of the Dae System object
BzzDae o(y0, t0, iDer, DyByDt);
All'ultima riga, mi dice "error C2664: cannot convert parameter 3 from BzzVectorInt& to BzzMatrixSparse&". Cioè, il compilatore non vede il costruttore che voglio usare io, sebbene sia ben presente nell'hpp:
// ============================================================================
// *****************************< constructors >*******************************
// ============================================================================
BzzDae(void)
:BzzDaeStiffBase(){};
BzzDae(BzzVector &y00,double t00,BzzMatrix &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f),
BzzMatrix &JJ);
BzzDae(BzzVector &y00,double t00,BzzMatrixSparse &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,AA,ptrSys);
}
void SetInitialConditions(BzzVector &y00,double t00,BzzMatrixSparse &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f));
void operator()(BzzVector &y00,double t00,BzzMatrixSparse &AA,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,AA,ptrSys);
}
BzzDae(BzzVector &y00,double t00,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f),
void (*ptrJac)(BzzVector &yy,double tt,BzzMatrix &JJ));
BzzDae(BzzVector &y00,double t00,BzzVectorInt &iDer,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,iDer,ptrSys);
}
void SetInitialConditions(BzzVector &y00,double t00,BzzVectorInt &iDer,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f));
void operator()(BzzVector &y00,double t00,BzzVectorInt &iDer,
void (*ptrSys)(BzzVector &y,double t,BzzVector &f))
{
SetInitialConditions(y00,t00,iDer,ptrSys);
}
Evidenziato in rosso quello che il compilatore vede, in blu quello che voglio usare io.
Perchè??? :muro: