【发布时间】:2016-01-15 14:15:17
【问题描述】:
我有一个名为 KernelLock 的类,我正在创建一个名为 myLockArray 的 KernelLock 数组。我这样声明:KernelLock myLockArray[150];
当我尝试向 myLockArray 添加新的 KernelLock 时,出现上述错误。这是我得到错误的确切行:
myLockArray[initializedLocksCounter] = new KernelLock(myAddrSpace, newLock);
这是确切的错误:
error: no match for 'operator=' in 'myLockArray[initializedLocksCounter] = (((KernelLock*)operator new(8u)), (<anonymous>->KernelLock::KernelLock(myAddrSpace, newLock), <anonymous>))
如果有帮助,我正在通过 Nachos 使用 gcc 进行编译。
【问题讨论】:
-
new 返回一个指针,而不是对象本身。
-
我如何返回对象本身?
-
“当我尝试将新的 KernelLock 添加到 myLockArray 时” 等等,什么?您有一个包含 150 个内核锁的数组。你怎么能添加另一个?听起来你在混淆 Java 和 C++ ......这不是一个指针数组......
-
或者你可以只存储指针。试试 myLockArray[initializedLocksCounter] = *(new KernelLock(myAddrSpace, newLock))
-
@DOUGLASO.MOEN:因为内存泄漏很有趣!
标签: c++ arrays operator-keyword nachos