我有一个关于在C ++中实例化对象的简单问题:
如果我们假设我的类具有默认构造函数,则可以这样创建新对象:

PfAlgorithm object = new PfAlgorithm();


但是当我运行时出现此错误:

conversion from ‘PfAlgorithm*’ to non-scalar type ‘ns3::PfAlgorithm’ requested


有人可以向我解释此错误的原因吗?
非常感谢你。

最佳答案

new运算符返回一个指针,而不是一个值。所以你需要写:

PfAlgorithm* object = new PfAlgorithm()


其中,object是指向新分配的PfAlgorithm对象的指针。可以在here中找到有关指针的一些简单介绍性信息。但是,正如下面的评论所讨论的那样,处理原始指针几乎绝不是一个好主意(由于存在内存泄漏,所有权不明确等潜在问题)。继续阅读...

在堆上分配了该对象后,您需要确保在完成处理后将其删除,否则应用程序将泄漏内存。为了简化操作,我强烈建议您也考虑使用boost libraries(或C ++ 11)中的智能指针来管理内存。

另外,正如其他人所建议的那样,您只需执行以下操作:

PfAlgorithm object;


并在堆栈上分配对象,而不必担心管理内存。

10-07 17:20