关于void *返回值为double的问题,编译失败
class mytest {
public:
int getDataInt(){
return u.i;
};
void setDataInt(int _i){
u.i=_i;
};
double getDataDouble(){
return u.d;
};
private:
union {
int i;
double d;
}u;
};
void* getValueI(mytest *d){
return (void *) d->getDataInt();
}
void* getValueD(mytest *d){
return (void *) d->getDataDouble();
}
int main()
{
mytest a;
int ia;
a.setDataInt(10);
ia = (int )(long) (getValueI)(&a);
printf("%d\n",ia);
return 0;
}编译报错:
in function:void* getValueD(mytest*)
error: invalid cast from type 'double' to type 'void*'
把该函数修改为
void* getValueD(mytest *d){
return (void *)& d->getDataDouble();
}则报如下错误:
error: invalid lvalue in unary ‘&’
对于getValueI 即返回值为int时,同样的写法则没有错误,
这是为什么呢?????
...全文
相关推荐
Java精选试题,英文Java试题
因此,该程序会因为语法错误而在编译时失败。
我的题库2006-2007
CreateFile的失败返回值- **失败返回值**:当`CreateFile`调用失败时,会返回`INVALID_HANDLE_VALUE`而不是其他Win32内核对象可能返回的`NULL`。
C#编写方法实例
此外,尝试编译程序将会失败。##### 2. 使用“生成方法存根向导”来编写方法- **第一步:** 选中`run`方法中的`readDouble`方法调用。
VC6.0 运行库参考手册
函数原型如下:```c++double acos(double x);````x`参数应为[-1,1]区间内的值,函数返回值是`x`的反余弦值,范围在[0, π]之间。
C&C++编程规范(超级实用)
示例:```cppvoid myFunc(int a);void myFunc(double a);```**7.2 内联**内联函数可以在编译时被替换为相应的代码,从而提高运行效率。


