Как назначить константную ссылку на указатель внутри функции в C ++? - PullRequest
0 голосов
/ 05 июня 2019

у меня была функция

void assign(std::vector<std::vector<double>> avg, int k) {
    double* ptr=&avg[k-1][0]
    //other stuff, but above is only line involving "avg" variable
}

Но функция работала медленнее, чем я хотел, потому что я передал по значению вместо ссылки. Если бы я попробовал следующее:

void assign(const std::vector<std::vector<double>>& avg, int k) {
    double* ptr=&avg[k-1][0]
    //other stuff
}

Тогда я получаю ошибку cannot convert from const_Ty * to double*. Как я могу передать функцию avg по ссылке?

1 Ответ

3 голосов
/ 05 июня 2019

Вы не можете изменить объект const ни прямо, ни косвенно.Это включает его назначение объектам, которые могут быть изменены (неконстантно).

Есть 2 варианта: либо сделать ptr const, либо удалить константу аргумента.В первом случае указатель будет доступен только для чтения (что может быть нормально или нет), а в последнем - ссылка на изменения (что в большинстве случаев не очень хорошо).

Вы также можетеподумайте, нужен ли вам этот указатель.

...