我有以下函数stdDev,它接受一个指向Student类对象的指针数组。学生班有一个成员函数getScores(),它将学生的分数作为双精度返回。
以下是代码:
double stdDev(Student array[], int SIZE) {
double sum, std_sum, mean, std_mean = 0;
double *std_scores = NULL;
std_scores = new double[SIZE];
for (int i = 0; i < SIZE; i++) {
sum += array[i]->getScore;
}
mean = sum / SIZE;
for (int i = 0; i < SIZE; i++) {
std_scores[i] = pow((array[i]->getScore - mean), 2);
std_sum += std_scores[i];
}
std_mean = std_sum / SIZE;
return sqrt(std_mean);
}
在上面代码的第8行和第13行,我收到以下错误:
expression must have pointer type
和
'*': illegal operation on bound member function expression
我是C ++指针语法的新手。任何帮助表示赞赏。
答案 0 :(得分:0)
您问题的简短回答是:
sum += answer[i].getScore;
除了你需要调用函数(不只是引用它),所以它应该是:
sum += answer[i].getScore();
其他问题:
sum
初始化为零。delete [] std_scores
删除它。double score2 = pow((array[i].getScore() - mean), 2);
最后点:
std_scores
是一个特别明显的例子 - 你初始化为NULL然后立即分配一个新值。除了sum
和std_sum
(以及i
)之外,您不需要任何非常量变量。std::accumulate