c++ - 使用成员函数处理堆中的对象(c++)

标签 c++ syntax

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

相关文章:

c++ - 如何使用 Gradle DSL(领域特定语言)上的文档?

c++ - 我在 unix 中编译代码时遇到编译器错误

c++ - 派生类构造函数中的数据驱动标志设置

javascript - 语句前缺少 ";"

javascript - jQuery 将选择器转换为负数

php - 在 PHP 中使用 Eval() 动态创建函数

c++ - boost::asio 如何实现定时数据包发送功能?

理解缩进的 php 语法检查器

syntax - VHDL - ror 和 rol 操作

.net - 使用 Windows Crypto API 的 Windows 2000 和 Windows 2003 RC2 加密/解密?