我有2个类 CVKinectWrapper.cpp 和 main.cpp 。在CVKinectWrapper中,bool CVKinectWrapper::update(){ ...
我有一个变量XnSkeletonJointPosition righthand;
我想在 main.cpp 类中访问此变量。因此我创造了一个
`void CVKinectWrapper::getRightHand(XnSkeletonJointPosition *righthand){
//*righthand = righthand;
righthand->copyTo(*righthand);
}`
直接分配不起作用,我得到此错误=''右手=右手'中的'operator ='不匹配。 copyTo不起作用,因为右手的数据类型没有这个方法。
了解更多信息:
这是我在主类= CVKinectWrapper *wrapper = CVKinectWrapper::getInstance();
wrapper->getRightHand(XnSkeletonJointPosition *righthand)
我现在的问题是如何从主类中的CVKinectWrapper访问右手变量。
这可能是一个非常基本的问题,但我对c ++很新。 提前谢谢。
答案 0 :(得分:2)
当询问编译器错误时,提供确切的错误消息通常是一个好主意,在这种情况下,它可能会说明两个参数的类型。无论如何,我想我可以猜出问题是什么。
你提到你有一个名为righthand
的变量,我假设它实际上是该类的成员,你想要将值复制到传递给函数的另一个变量getRightHand
。现在的问题是函数的参数与成员具有相同的名称,它是 shadowing 它。在getRightHand
内,标识符righthand
引用参数,而不是成员。您可以通过更改参数名称或限定对成员的访问权限来解决此问题:*righthand = this->righthand;
从特定错误消息开始,操作*righthand = righthand;
字面意思是将指针righthand
(函数的参数)的值赋给它指向的对象,这没有多大意义。从设计的角度来看,C ++中的函数非常不恰当,应该可以替换为:
const XnSkeletonJointPosition& CVKinectWrapper::getRightHand() const {
return righthand;
}
调用者会这样做:
XnSkeletonJointPosition res = wrapper.getRightHand();