包含类的结构的类“列表”

时间:2012-11-06 16:11:31

标签: c++ list class structure

我正在尝试编写动态链接的复数列表。基本上:我有一个类list,其中包含一个包含类number的结构complex。框中的框中的框。我有引用复数本身的问题(我只有添加节点的函数。到目前为止我的代码:

complex.h

class complex
    {
    public:   
        float r;
        float i;
    };

list.h

#include "complex.h"
class list

{

public: 
typedef struct number
{
    complex a;

    struct number *next;
}number;

number *number;

public:
        void add(number* number,complex b);
        list();
        ~list();

};

list.cpp(包含函数add,不起作用)

void list::add(number* number, complex b)
{
        number *newo=new number;        

         while (number->next != NULL)         
             { 
             number = number->next;
             }

          newo = malloc (sizeof(number)); 
          newo->a::r = b::r;  
          newo->a::i = b::i; 
          newo->next = NULL;                
          number->next = newo;      

}

感谢您的帮助;)

2 个答案:

答案 0 :(得分:3)

这些行

      newo->a::r = b::r;  
      newo->a::i = b::i; 

应该是

      newo->a.r = b.r;  
      newo->a.i = b.i; 

或者更简单的是你可以写

      newo->a = b;  

您遇到的其他问题

1)您将数字节点分配两次,一次使用new,一次使用malloc。只需执行一次,然后使用new

2)这个数字似乎是list课程中未初始化的指针。这会让你的程序崩溃。编写list的构造函数,将number初始化为NULL。

3)list::add的逻辑错误,即使number为NULL,你做的第一件事就是number->next,这也会导致程序崩溃。

4)名称遍布各地(正如其他人所指出的那样)。尝试为所有内容选择好名字,它将帮助您了解自己的代码。

答案 1 :(得分:0)

在list.h中更改成员编号(我想这是列表的开头。) 号码*头;

函数Add毫无意义。我会那样做:

void list::add(complex b)
{
        number *newo = new number;        
        newo->a::r = b.r;  
        newo->a::i = b.i; 
        newo->next = NULL;                

        if(!head)
        {
            //first item
            head = newo;
        }
        else
        {
            number *itr = head;
            while (itr->next != NULL)         
            { 
                itr = itr->next;
            }
            itr->next = newo;
        }
}
相关问题