我有一个公共成员int* classPointer
的班级。我想要一个函数getPointer(int** externalPointer)
,它使externalPointer指向classPointer的数据,让我在类上下文之外使用它。
我试过了
void getPointer(int** externalPointer) {externalPointer = &internalPointer;}
并将其称为:getPointer(&externalPointer)
。我收到警告:“参数externalPointer设置但从未使用过。”
我不认为这是正确的做法。感谢帮助。
答案 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;