我有以下函数原型:
virtual CBuffer& GetData(unsigned int& samples, unsigned int& stride);
这将返回对作为我的类的私有成员的 CBuffer 对象的引用。
问题是,如果写如下,方法返回的内部私有成员将被重新分配。
CBuffer& CPlug::ProcessData(unsigned int& samples, unsigned int& stride)
{
/* get the data from the source */
CBuffer& buffer = m_source.GetData(samples, stride);
if (m_postProcess)
buffer = PostProcess(buffer, samples, stride);
return buffer;
}
显然,这可以通过执行以下操作来解决:
CBuffer& CPlug::ProcessData(unsigned int& samples, unsigned int& stride)
{
/* get the data from the source */
CBuffer* buffer = &m_source.GetData(samples, stride);
if (m_postProcess)
buffer = &PostProcess(*buffer, samples, stride);
return *buffer;
}
但我想知道是否有某种方法可以防止这种情况发生,可能是通过一些const
我不知道的使用?
在这一点上,我认为我应该只转换为使用指针,但很高兴知道它是否可以完成。