错误 C2679 二进制"=":未找到采用类型 'int' 的右侧操作数的运算符(或者没有可接受的转换)
Error C2679 binary '=': no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
我写一个程序实现一棵树并首先遍历广度这棵树。 该程序包括3个文件:queue.h,tree.h和main.cpp...这是队列.h
#pragma once
#include <iostream>
template <class T>
struct L1node {
T data;
L1node* next = NULL;
};
template <class T>
class L1queue
{
L1node<T>* pHead, pTail;
public:
L1queue() :pHead(NULL), pTail(NULL) {}
~L1queue() {
if (pHead) {
while (pHead->next) {
L1node<T>* p = pHead;
pHead = pHead->next;
delete p;
}
delete pHead;
}
return 0;
}
bool isEmpty() {
return pHead == NULL:
}
T& head() {
if (isEmpty()) throw - 1;
return pHead->data;
}
void enqueue(T& a) {
L1node<T> p = new L1node<T>(a);
if (isEmpty()) {
pHead = pTail = p;
}
else {
pTail->next = p;
pTail = p;
}
}
void dequeue() {
if (isEmpty()) return;
L1node<T>* p = pHead;
pHead = pHead->next;
delete p;
if (pHead == NULL) pTail = NULL; //Error here
}
};
这是树。
#include <iostream>
#include "queue.h"
using namespace std;
class treeNode {
public:
int data;
treeNode* left = NULL;
treeNode* right = NULL;
};
void printLeavesBFT(treeNode* root) {
L1queue<treeNode*> q;
while (!q.isEmpty()) {
treeNode* p = q.head(); cout << p->data << " ";
q.dequeue();
if(p->left) q.enqueue(root->left);
if(p->right) q.enqueue(root->right);
}
}
我在取消排队功能中遇到错误。我不知道原因。你可以帮我吗!
pTail
被声明为L1node<T>
而你打算将其声明为L1node<T>*
。然后,pTail = NULL
就没有意义了。
当你写L1node<T>* pHead, pTail;
时,只有pHead
是一个指针,pTail
是一个对象。
替换为
L1node<T> *pHead, *pTail;
或:
L1node<T>* pHead;
L1node<T>* pTail;
相关文章:
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 是否所有C++运算符都接受操作数?
- 一元*运算符的操作数是否期望一个 prvalue
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- 没有运算符"="与这些操作数匹配,JUCE 窗口演示应用程序
- C2679 二进制"<<":未找到采用右操作数类型的运算符
- CPP 运算符重载操作数位置 [] 与 ==
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 运算符'<'不能应用于类型 'string' 和 'string' 的操作数
- 错误 C2679 二进制"<<":未找到采用类型为 'T' 的右侧操作数的运算符
- 是否允许三元运算符在C++中计算两个操作数?
- 二进制 '==':未找到采用 'Enemy' 类型左侧操作数的运算符(或者没有可接受的转换)
- 与"运算符>>"不匹配(操作数类型为"QDataStream"和"QJsonObject")
- 类型"int"和"const char [15]"到二进制"运算符<<"的无效操作数^
- 如何摆脱逗号运算符的这个错误右操作数没有效果( wunsued 值)?
- c++ 错误:二进制"运算符+"类型"矩阵*"和"矩阵*"的操作数无效
- c++运算符重载-我实际返回的操作数类型是什么
- 没有运算符>>与这些操作数匹配 ifstream