如何在C ++中修复错误C2460

how to fix error C2460 in c++?

本文关键字:错误 C2460      更新时间:2023-10-16
#include<iostream>
using namespace std;
struct link
{
    link data;
    link* next;
};
class linklist
{
private:
    link* first;
public:
    linklist()
    {first=NULL;}
    void additem(int d);
    void display();
};
void linklist::additem(int d)
{
    link* newlink=new link;
    newlink->data=d;
    newlink->next=first;
    first=newlink;
}
void linklist::display()
{
    int n=0;
    link* current=new link;
    current=first;
    while(current!=NULL)
    {
        cout<<"The link data number"<<++n<<"is"<<current->data<<endl;
        current=current->next;
    }
    if(current==NULL)
        cout<<"This is empty linkedlist"<<endl;
};
int main()
{
    linklist li;
    li.additem(25);
    li.additem(36);
    li.additem(49);
    li.additem(64);
    li.display();
    return 0;
}

我在编译此代码时收到此错误(错误 C2460:"data":使用正在定义的"链接"),我无法修复它,请提供任何帮助我在编译此代码时收到此错误(错误 C2460:"data":使用正在定义的"链接"),我无法修复它,请提供任何帮助

struct link
{
    link data;

这是非法的。对象不能包含自身作为类成员。

这是针对您的确切问题的解决方案,因为您仅使用 data 字段来存储整数。

struct link
{
    int data;
    link* next;
};
至于错误,

错误非常明显:编译器不知道需要为"链接数据"成员保留多少空间,因为类"link"仍在定义中。指针不会出现问题,因为无论哪种类型的指针,它们都使用相同的空间量,通常是 32 位或 64 位,具体取决于您的设置。