从不兼容类型“ void”分配给“ char”

时间:2019-05-06 03:48:17

标签: c++

尝试使用堆栈反向链接列表,但尝试重写数据时始终遇到问题。当我从堆栈中弹出时,尝试从数据类型void分配一个char。

master

尝试保存数据时,这是我收到代码错误的行。

    void CharList::reverseNodes(){

    CharNode *nodePntr;
    CharNode *pre_nodePntr;
    std::stack<char> myStack;

    pre_nodePntr = nullptr;
    nodePntr = nullptr;

    if (top){
        nodePntr = top;

        while (nodePntr != nullptr){
            myStack.push(nodePntr->data);
            nodePntr = nodePntr->pntr;
        }
        nodePntr = top;
        while (!myStack.empty()) {
            nodePntr->data = myStack.pop();
            nodePntr = nodePntr->pntr;
        }

    } else{
        std::cout << "No nodes exist to reverse." << std::endl;
    }
}

1 个答案:

答案 0 :(得分:3)

哦,这很容易! Stack :: pop()方法不会返回您要分配给char属性的任何内容(这就是为什么void的原因)。您需要使用myStack.top()来获取值,然后像这样调用myStack.pop():

nodePntr->data = myStack.top();
myStack.pop();
nodePntr = nodePntr->pntr;