我是C++的初学者,这是一个非常基本的语法问题,但我似乎在其他地方找不到答案。任何输入都将受到欢迎。这是问题的简化版本。
说我有一个类(class)“一对”
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;