C ++:将方法参数设置为指针

时间:2015-03-27 17:08:54

标签: c++ pointers parameters

我有一个公共成员int* classPointer的班级。我想要一个函数getPointer(int** externalPointer),它使externalPointer指向classPointer的数据,让我在类上下文之外使用它。

我试过了 void getPointer(int** externalPointer) {externalPointer = &internalPointer;}

并将其称为:getPointer(&externalPointer)。我收到警告:“参数externalPointer设置但从未使用过。”

我不认为这是正确的做法。感谢帮助。

2 个答案:

答案 0 :(得分:2)

假设您使用双指针作为模仿引用来模拟返回值的奇怪的C风格方式,那么您想要通过指针写入指向它的指针,而不是修改本地函数参数:

void getPointer(int** externalPointer) {*externalPointer = internalPointer;}
                                        ^ add *            ^ lose &

除非您的目标是阻止该功能的用户,否则在您想要参考时使用参考:

void getPointer(int*& externalPointer) {externalPointer = internalPointer;}

并且,如果引用的目的是返回一个值,那么只返回一个值:

int *getPointer() {return internalPointer;}

答案 1 :(得分:0)

如果你传入一个(int **)并为它指定地址,它所指向的东西就是classPointer。

class Blah
{
public:
  void getPointer(int** externalPointer)
  {
    *externalPointer = classPointer; // Add the star at the beginning.
  }

  int* classPointer;
}

呼叫是这样的:

int* k = new int;
std::cout << "k=" << *k << " at address:" << k << std::endl;
blah.getPointer(&k);
std::cout << "blah.classPointer=" << *blah.classPointer 
          << " at address:" << blah.classPointer 
          << std::endl;

如果classPointer是公共的,那么您也不需要方法来执行此操作。

Blah blah;
int* ptr = blah.classPointer;