我有一个关于在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;
并在堆栈上分配对象,而不必担心管理内存。