我是 C++ 的初学者,这是一个非常基本的语法问题,但我似乎无法在其他地方找到答案。欢迎任何意见。这是问题的简化版本。
假设我有一个类“对”
class pair
{
int a;
int b;
public:
pair(int x,int y)
{
a=x;
b=y;
}
int lookup()
{
return this->a+b;
}
};
然后我将该实例实例化并复制到堆上的某个位置。
int func()
{
...
pair test(1,2);
pair *ptr=new pair;
*ptr=test;
}
现在是关键。函数结束后,我不会破坏此内存分配。我想稍后在其他功能中使用它。问题是,我更愿意将它保存在堆中而不必将它复制到堆栈(在实际程序中它非常大)。因此,我想做这样的事情:
int otherfunc()
{
...
int sum=*ptr.lookup;
}
但是我得到一个编译器错误。我最终不得不做类似的事情:
int otherfunc()
{
...
point temp=*ptr;
int sum=temp.lookup;
}
虽然这可行,但它是多余的,在处理非常大的事情时,它甚至可能导致溢出。有人知道在将指针保存在堆上时使用指针调用方法的语法吗?谢谢。
最佳答案
我相信这就是您想要做的:
int sum = ptr->lookup();
顺便说一句,这个:
return this->a+b;
这样可能会更好:
return a+b;
关于c++ - 使用成员函数处理堆中的对象(c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452210/