Когда вы спрашиваете об ошибках компилятора, обычно хорошей идеей является предоставление точного сообщения об ошибке, в котором в этом случае, вероятно, указывается тип двух аргументов.В любом случае, я думаю, что могу догадаться, в чем проблемы.
Вы упомянули, что у вас есть переменная с именем righthand
, которая, как я полагаю, на самом деле является членом класса, иВы хотите скопировать значение в другую переменную, переданную в функцию getRightHand
.Теперь проблема в том, что аргумент функции имеет то же имя, что и член, и это shadowing it.Внутри getRightHand
идентификатор righthand
относится к аргументу, а не к члену.Это можно решить, изменив имя аргумента или уточнив доступ к члену: *righthand = this->righthand;
Что касается конкретного сообщения об ошибке, операция *righthand = righthand;
буквально означает присвоение значения указателя righthand
(аргумент функции) на объект, на который она указывает, что не имеет особого смысла.С точки зрения дизайна, функция в том виде, в каком она есть, совершенно не идиоматична в C ++ и, вероятно, должна быть заменена на:
const XnSkeletonJointPosition& CVKinectWrapper::getRightHand() const {
return righthand;
}
И вызывающая сторона сделает:
XnSkeletonJointPosition res = wrapper.getRightHand();