提问者:小点点

模板堆栈中“数组类型不可赋值”C++


我正在用C++处理这个模板堆栈:

节点:

template <typename TS>
    struct spNodoPila {
        TS info;
        spNodoPila<TS>* next;
    };

带有push和pop函数的堆栈ADT结构:

template <typename TS>
    struct ADTPila {
        spNodoPila <TS>* head = NULL;
        spNodoPila <TS>* pos = NULL;

        
        void push(TS dato) {
            spNodoPila<TS>* nodo = new spNodoPila<TS>();
            nodo->info = dato;
            nodo->next = NULL;
            if (head == NULL) {
                head = nodo;
            }
            else {
                nodo->next = head;
                head = nodo;
            }
        }
        void pop(spNodoPila<TS>*& nodo) {
            nodo = new spNodoPila<TS>();
            if (head == NULL) {

            }
            else if (head->next != NULL) {
                nodo = head;
                pos = head->next;
                delete(head);
                head = pos;
                pos = NULL;
            }
            else {
                nodo = head;
                delete(head);
                head = NULL;
            }
        }
    };

在这段代码中,在前一个结构的后面,我在最后一行得到错误“数组类型TS不是可赋值的”:

spNodoPila<TS>* nodo = new spNodoPila<TS>();
            nodo->info = dato;

需要强调一点是,在代码后面,我将堆栈实例化为字符串(char[60]typedef),因为我希望该堆栈处理该类型的数据。移除那些“str”的实例,程序会编译,所以我猜可能存在一个问题,分配char数组的内存,或者在我做某事的方式。实例示例:

以“str”(char[60]typedef)为例的Stak模板ADTPila到列表节点中:

struct spNodoLista {
        sInfoLista info;    
        ADTPila <str> cand;
        spNodoLista* prev;
        spNodoLista* next;
        spNodoVotos* vlink;
    };

非常感谢你的帮助!


共1个答案

匿名用户

就像注释部分中指出的那样,问题非常简单:我试图将一个字符数组直接分配给“nodo->info=dato;”中的另一个字符数组,所以我用strcpy(dato->info,dato)解决了这个问题。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(模板|堆栈|中|数组|类型|赋值|c++)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?