问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++ error C2228的解决办法

发布网友 发布时间:2023-08-22 12:50

我来回答

2个回答

热心网友 时间:2023-08-31 23:33

就这个程序而言,你的错误有两个,一是link有的是大写有的小写,前后不一,编译器不识别,二是List<int> List();这句话应该这样:List<int> List;这才真正创建了一个对象List,如下修改:
#include <iostream>
using namespace std;
template <class T>
struct LinkNode{
T data;
LinkNode<T> *Link;
LinkNode(LinkNode<T> *ptr=NULL){Link=ptr;}
LinkNode(const T& item,LinkNode<T> *ptr=NULL)
{
data=item; Link=ptr;
}
};
template<class T>
class List{
public:
List(){first=new LinkNode<T>;}
List(const T&x){first=new LinkNode<T>(x);}
//List(List<T>& L);
~List(){makeEmpty();}
void makeEmpty();
LinkNode<T>* Locate(int i);
bool Insert(int i,T&x);
bool Remove(int i,T&x);
void input();
void output();
protected:
LinkNode<T>*first;
};
template<class T>
void List<T>::makeEmpty()
{
LinkNode<T> *q;
while (first->Link!=NULL)
{
q=first->Link;
first->Link=q->Link;
delete q;
}
}
template<class T>
LinkNode<T> *List<T>::Locate(int i)
{
if(i<0) return NULL;
LinkNode<T> *current=first; int k=0;
while (current!=NULL&&k<i)
{
current=current->Link; k++;
}
return current;
}
template<class T>
bool List<T>::Insert(int i,T&x)
{
LinkNode<T>* current=Locate(i);
if (current=NULL) return false;
LinkNode<T>* newNode=new LinkNode<T>(x);
if (newNode==NULL){cerr<<"存储分配错误!"<<endl;exit(1);}
newNode->Link=current->Link;
current->Link=newNode;
return true;
}
template<class T>
bool List<T>::Remove(int i,T&x)
{
LinkNode*current=Locate(i-1);
if (current==NULL ||current->Link==NULL) return false;
LinkNode<T>*del=current->Link;
current->Link=del->Link;
x=del->data;
delete del;
return true;
}
template <class T>
void List<T>::output()
{
LinkNode<T>*current=first->Link;
while (current!=NULL)
{
cout<<current->data<<endl;
current=current->Link;
}
}
template<class T>
void List<T>::input()
{
LinkNode<T>*current=first->Link;
while(current->data!=0)
{
cin>>current->data;
current=current->Link;
}
}

int main()
{
cout<<"请输入链表的元素(以0结束):";
List<int> List;
List.input();
List.output();
return 0;
}
不过修改后运行时你会发现你的程序还有别的问题,应该是指针和内存方面的,再好好调试下吧

热心网友 时间:2023-08-31 23:34

编译器错误 C2228

错误消息
“.identifier”的左侧必须有类/结构/联合
句点 (.) 左边的操作数不是类、结构或联合。

下面的示例生成 C2228:
// C2228.cpp
int i;
struct S {
public:
int member;
} s, *ps = &s;

int main() {
i.member = 0; // C2228 i is not a class type
ps.member = 0; // C2228 ps is a pointer to a structure

s.member = 0; // s is a structure type
ps->member = 0; // ps points to a structure S
}

如果在使用托管扩展时使用了错误的语法,则也将显示此错误。而在其他 Visual Studio 语言中,可以使用点运算符访问托管类的成员,在 C++ 中指向对象的指针意味着必须使用 -> 运算符访问该成员:
错误:String * myString = checkedListBox1->CheckedItems->Item[0].ToString();
正确:String * myString = checkedListBox1->CheckedItems->Item[0]->ToString();
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 error C2228: left of &#39;.name&#39; must have class/struct/union type... c语言error C2228: left of &#39;.tag&#39; must have class/struct/union type... 鄂a是哪里的车牌号码 鄂a武汉市的车牌号码 食物会引起面部的皮肤过敏症状吗? 食物过敏只能脸上有疙瘩吗 网上交社保几天可以查到 ...由于上个月有一份作废的发票,忘记作废了,这样的情况说明怎么写 税务申报作废申请怎么写 麦饭石不粘锅涂层掉了有毒吗 作为政治教研员有什么优势? 大学“教研产”模式有何优点和待完善的地方? 我的给别人为什么没有备注了? 不同年龄段的小学生应该如何做好时间管理? 不同年龄段的童年有什么不同? 不同年龄小朋友,引导方式不同? 烘干机自动停机是什么原因? 800分贝声音有多大 全民k歌私信设置只有关注才可以私信,别人给我发,他那边会显示 在感情里面,始终都是付出的那个人比较吃亏吗? 朋友说日本的crystal jemmy 的护肤品很好使,有人用过吗?怎么样? C语言 求教:这是什么错误?如何修正?error c2228 C++中“&#39; must have class/struct/union type”是什么错误 c语言错误 5 error C2228: &quot;.v&quot;的左边必须有类/结构/联合,代码有一些问 ... C语言程序为什么会出现以下错误 3个学生,每个学生的数据包括学号、姓名、3门课的成绩, 我买的中美联泰大都会人寿保险10意外险已交29个月要退保扣多少?_百度... 九里亭外国语实验学校入学条件 九里亭亭盛学校是什么办学集团的 ...场地具体在哪里?只知道在九里亭,附近有什么什么物流?如果从海德城... 怎样形容很会装可怜冤枉人的女生 我的世界群峦传说秘青铜工具怎么做 群峦传说鞣酸怎么做 我的世界群峦传说烧模具为什么右键点不了火 珠海到广州几个小时 珠海到广州打车还是 广州去珠海要多久 ...学院要在哪个站下车比较近,具体路程打车要多久? 梦到自己跟男友睡在一起被一个男的进来打扰了还把我压在床上是... 新疆回民凉粉汁怎么做 行李箱忘记密码了有什么办法解开吗?除了撬开哈&#xF60C;