关于c++类内定义的struct的问题

时间:2022-08-30 00:23:27


class A{

private:
  struct node{
    int data;
    node* next;
  }*H;
public:
  A(){
    H=NULL:
  }
  
  void add(int i){ 
    
     node* n=new node(); //这里有错

     ....
  }
  void xx(){
        
     node n; //这样也有错
     为什么呢???
     ....
  } 

};



10 个解决方案

#1


A::node * n = new A::node();

#2


得这么写吧:
struct node* n=new node(); 
struct node n;

#3


class A{ 


private:
struct node{
int data;
node* next;
}*H;
public:
A()
{
H=NULL;
}

void add(int i)
{
node * n=new node();
}
void xx()
{
node n;


};

不知道[color = #FF0000]是干嘛用的,不过我按上面的实现没有问题。

#4


这时的类和命名空间类似了,这样用A::node * n = new A::node();
不过既然楼主是用在外部的函数中,不明白lz为什么将结构体放在类内?

#5



  struct node{
    int data;
    node* next;
  }*H;

改为

  typedef struct tag_node{
    int data;
    tag_node* next;
  } node, *H;

#6




node是内部声明的结构....

#7


引用 3 楼 wu_xiangwei 的回复:
class A{

 private:
  struct node{
  int data;
  node* next;
  }*H;
  public:
  A()
  {
  H=NULL;
  }

  void add(int i)
  {
  node * n=new node();
  }
  void xx()
  {
  node n;
  }

 };

 不知道[color = #FF0000]是干嘛用的,不过我按上面的实现没有问题。


不好意思
这个是论坛发贴的指定颜色的标记,不知道怎么是没作用上

#8


引用 4 楼 zzcmx2008 的回复:
这时的类和命名空间类似了,这样用A::node * n = new A::node();
 不过既然楼主是用在外部的函数中,不明白lz为什么将结构体放在类内?


这个代码是随便写来表现问题的
没其他意思

我的问题是在实际中遇到的类似的问题

#9


xuexi 

#10


不知道为什么在类的内部定义结构

#1


A::node * n = new A::node();

#2


得这么写吧:
struct node* n=new node(); 
struct node n;

#3


class A{ 


private:
struct node{
int data;
node* next;
}*H;
public:
A()
{
H=NULL;
}

void add(int i)
{
node * n=new node();
}
void xx()
{
node n;


};

不知道[color = #FF0000]是干嘛用的,不过我按上面的实现没有问题。

#4


这时的类和命名空间类似了,这样用A::node * n = new A::node();
不过既然楼主是用在外部的函数中,不明白lz为什么将结构体放在类内?

#5



  struct node{
    int data;
    node* next;
  }*H;

改为

  typedef struct tag_node{
    int data;
    tag_node* next;
  } node, *H;

#6




node是内部声明的结构....

#7


引用 3 楼 wu_xiangwei 的回复:
class A{

 private:
  struct node{
  int data;
  node* next;
  }*H;
  public:
  A()
  {
  H=NULL;
  }

  void add(int i)
  {
  node * n=new node();
  }
  void xx()
  {
  node n;
  }

 };

 不知道[color = #FF0000]是干嘛用的,不过我按上面的实现没有问题。


不好意思
这个是论坛发贴的指定颜色的标记,不知道怎么是没作用上

#8


引用 4 楼 zzcmx2008 的回复:
这时的类和命名空间类似了,这样用A::node * n = new A::node();
 不过既然楼主是用在外部的函数中,不明白lz为什么将结构体放在类内?


这个代码是随便写来表现问题的
没其他意思

我的问题是在实际中遇到的类似的问题

#9


xuexi 

#10


不知道为什么在类的内部定义结构