Я новичок в C ++, и это довольно простой синтаксический вопрос, но я не могу найти ответ в другом месте. Любой вклад будет приветствоваться. Вот упрощенная версия проблемы.
Скажем, у меня есть класс 'pair'
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;
}
Хотя это работает, оно является избыточным, и при работе с действительно большими объектами оно может даже потенциально вызвать переполнение. Кто-нибудь знает синтаксис для вызова метода с использованием указателя, сохраняя его в куче? Спасибо.