C ++函数和指针

时间:2016-01-14 10:25:39

标签: c++ function pointers

我有一个编写一个小程序的任务,包括使用指针和函数来查找平方根。我收到一条错误,上面写着" 3个重载中没有一个可以转换所有参数类型" 感谢您的帮助

这是我到目前为止的代码。我知道这很乱,我希望你们能帮忙。

void SqrRt(unsigned long int *, unsigned long int *);

int main() {

    unsigned long int number, root;

    cout << "Type in any number greater than 0 to find it's square root: ";
    cin >> number;

    SqrRt(&number, &root);

    return 0;
}

void SqrRt(unsigned long int *num, unsigned long int *rt){

    if (num >= 0)
        rt = sqrt(num);
    else
        cout << "Invalid input! Number should be greater than 0!";
    }

2 个答案:

答案 0 :(得分:2)

[/quote]只能处理数字,不是指向它们的指针,因此您需要做的就是取消引用您传递给{{1 }}。

除此之外,sqrt还会返回一个数字,因此您还应该取消引用您指定的指针。

答案 1 :(得分:0)

您需要将rt = sqrt(num)重写为*rt = sqrt(*num)。您的代码的问题在于您不是指底层对象,即指针指向的对象。我建议你,如果可能的话,使用引用,因为与指针相比,它更容易使用。