没有可行的超载

时间:2011-11-20 11:03:18

标签: c++ xcode class properties

我有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 ++很新。 提前谢谢。

1 个答案:

答案 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();