【发布时间】:2012-01-30 23:15:40
【问题描述】:
我是 Objective-C 的新手,如果这在语言中本身不起作用,请原谅,但它似乎应该这样做。我想要做的是以英寸为单位计算书籍对象的厚度。以下是Book 头文件中的对象:
NSString *title, *author;
int *numPages;
/**
* The thickness of any given page in the book, in inches (e.g. 20lb stock would be 0.0038)
*/
double *pageThickness;
bool *hasHardCover;
我的想法是,我将通过将(页面厚度和页数的乘积)加上(书籍封面的厚度;如果是硬封面四分之一英寸,则为四)来计算书的厚度如果是平装本,则为页面厚度的倍数)。但是,我在以下实现中遇到了几个错误:
63 -(int *)calculateWidthInInches
64 {
65 return (((double *)numPages) *
66 pageThickness) +
67 (hasHardCover ? 0.25 :
68 (pageThickness * 4.0));
69 }
以下是错误:
/Users/student4/Downloads/LibraryOfBooks/Book.m:66: error: invalid operands to binary * (have 'double *' and 'double *')
/Users/student4/Downloads/LibraryOfBooks/Book.m:68: error: invalid operands to binary * (have 'double *' and 'double')
/Users/student4/Downloads/LibraryOfBooks/Book.m:69: warning: control reaches end of non-void function
我怀疑最后一个是编译返回行失败造成的。 我的calculateWidthInInches 方法做错了什么?
修复:
63 -(double)calculateWidthInInches
64 {
65 return ((*numPages) * *pageThickness) + (*hasHardCover ? 0.25 : (*pageThickness * 4.0));
66 }
【问题讨论】:
-
int *不是 int,它是一个指向 int 的 指针。与double *相同
标签: objective-c casting compiler-errors