我有一个名为KernelLock的类,并且正在创建一个名为myLockArray的KernelLocks数组。我这样声明: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进行编译。
最佳答案
KernelLock myLockArray[150];
这是一个包含150个内核锁的数组。
当我尝试向myLockArray添加新的KernelLock时
您不能将任何对象添加到数组。数组的大小始终是恒定的。它总是有150个锁。
myLockArray[initializedLocksCounter] = new KernelLock(myAddrSpace, newLock);
错了
new
返回动态分配的对象的地址。您正在尝试将该地址分配给索引为KernelLock
的现有initializedLocksCounter
对象。您不能将地址分配给非指针对象(除非该对象具有相应的(非显式)构造函数)。如果要增加阵列,请使用
std::vector<KernelLock>
关于c++ - C++在我的自定义对象数组中不匹配'operator =',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33177041/