C++ 分配变量和类的类型
请帮帮我,让我问一个愚蠢的问题。 我将变量x声明为DeriveType DeriveType是一个类。 我想给x赋值一个整数y,例如 int y=x 但是当我编译时,编译器会显示错误 错误:无法将“const DerivType”转换为“int” 请告诉我如何解决这个问题。 非常感谢你。 你诚挚的 这是DerivType类C++ 分配变量和类的类型,c++,C++,请帮帮我,让我问一个愚蠢的问题。 我将变量x声明为DeriveType DeriveType是一个类。 我想给x赋值一个整数y,例如 int y=x 但是当我编译时,编译器会显示错误 错误:无法将“const DerivType”转换为“int” 请告诉我如何解决这个问题。 非常感谢你。 你诚挚的 这是DerivType类 class DerivType; typedef DerivType (*ddf_FctPtr)(const DerivType&); class DerivTy
class DerivType;
typedef DerivType (*ddf_FctPtr)(const DerivType&);
class DerivType { private: interval f, df, ddf;
public: DerivType ( );
DerivType ( const interval&, const interval&, const interval& );
DerivType ( const DerivType& );
DerivType& operator= ( const DerivType& );
friend DerivType DerivConst ( const real& );
friend DerivType DerivConst ( const interval& );
friend DerivType DerivVar ( const real& );
friend DerivType DerivVar ( const interval& );
friend inline const interval fValue ( const DerivType& );
friend inline const interval dfValue ( const DerivType& );
friend inline const interval ddfValue ( const DerivType& );
friend DerivType operator+ ( const DerivType& );
friend DerivType operator- ( const DerivType& );
....
我有一个这样的函数
DerivType f ( const DerivType& x )
{
DerivType result;
DerivType xx;
double sum;
xx = x;
//Convert x from DerivType to double
void *pVoidx = &xx; [1]
double *pDoublex = static_cast<double*>(pVoidx); [2]
MLPutReal(lp, *pDoublex);
MLGetReal(lp, &sum);
//Convert from double to DerivType for the return value of function
printf( "x = %f, result = %f\n", *pDoublex, sum);
void *pSum=∑ [3]
DerivType *pDerivTypeSum = static_cast<DerivType*>(pSum); [4]
return *pDerivTypeSum;
}
此功能正常工作。但是我的老师说它不是好代码,因为即使代码在这种情况下工作,它仍然依赖于实现和架构。他给了我链接:^]
你能帮我改进一下这个代码吗,即[1]、[2]、[3]、[4]
我的想法是如何从DerivType转换为double/int,反之亦然
感谢您的阅读和帮助
我非常感激你的暗示
您诚挚的
多谢各位
您诚挚的,如果将您的类型转换为int有意义,那么您可以提供一个转换运算符:
class DeriveType {
//...
operator int() {return <some integer value>;}
//...
};
如果没有意义,那么就不要编写试图这样做的代码。从DeriveType转换为int意味着什么?您可能应该编写一个转换运算符。感谢您的回复。你很好。亲爱的专业人士,我如何使用你的点击,我不能使用:inty=intx;事实并非如此work@nothingx0x:如果转换有意义,那么您必须添加转换运算符,如我所说。如果它没有意义,那么就不要像我说的那样尝试去做。