我有一个关于在 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;
并在堆栈上分配您的对象,而不必担心管理内存。
关于c++ - 实例化类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11402386/