我是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;

07-24 09:46
查看更多