代码错误!!!

levis_caval 2009-05-26 12:27:08
#include<iostream>

using namespace std;

class Item
{
public:
Item(char* name, int age)
{
if (NULL == name)
{
m_name = new char[10];
strcpy(m_name, "未命名");
}
else
{
m_name = new char[strlen(name)+1];
strcpy(m_name, name);
}
m_age = age;
Next = NULL;
}
~Item()
{
if (m_name)
{
delete []m_name;
m_name = NULL;
}
}

void Display()
{
cout << this->m_name <<":"<< this->m_age <<endl;
}

int m_age;
char* m_name;
Item* Next;
};

class list
{
public:
list()
{
m_head = NULL;
m_tail = NULL;
m_len = 0;
}
~list()
{

}

bool IsEmpty()
{
return (m_len == 0);
}

void CreatNode(char* name, int age =0)
{
Item* node = new Item(name, age);

if ((m_head == m_tail) && (m_head == NULL))
{
m_head = node;
m_tail = node;
m_head->Next = NULL;
m_tail->Next = NULL;
m_len = 1;
}
else
{
m_tail->Next = node;
m_tail = m_tail->Next;
m_tail->Next = NULL;
}
}

bool DelNode(int index, int offset=0)
{

return false;
}

Item* Locate(int index, int offset=0)
{
Item* node = NULL;
if (index<0 || index>m_len)
{
return NULL;
}
switch (offset)
{
case 0:
{
node = m_head;
int stedp =0;
while(node)
{
if(index == stedp+1)
{
return node;
}
stedp++;
node = node->Next;

}
if (index != stedp+1)
{
break;
}
return node;
}
break;
case 1:
{

}
break;
}
return NULL;
}



Item* operator[](int index)
{
if(index<0 || index>=m_len)
{
return NULL;
}
else
{
return Locate(index+1);
}
return NULL;
}

void Display()
{
Item* node = m_head;

while(node)
{
cout << node->m_name<<":"
<< node->m_age <<endl;
node = node->Next;
}
}
private:
Item* m_head;
Item* m_tail;
int m_len;
};

int main()
{
list* s = new list;
s->CreatNode("nam", 34);
s->CreatNode("nX", 34);
s->CreatNode("nD", 34);
s->CreatNode("nXXm", 34);

s[2].Display();

delete s;


return 0;
}


运行结果如下:
_8:3672120

我想输出相应的第二项,去输出了这个,想问下这是哪里的问题?还请大家不吝赐教?是否是对象的生命周期的问题!如果是请标出位置
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leegongbo 2009-05-26
  • 打赏
  • 举报
回复
s[2].Display();

s[2] 不存在这样的用法吧。所以打出来的结果乱七八遭

如果要取第二项,使指针从头开始,移动一次就可以取到item,然后打印就行了。
pengzhixi 2009-05-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 goodname 的回复:]
(*s)[2]->Display();
或者
list &sx = *s;
sx[2]->Display();

另外
void CreatNode(char* name, int age =0)
{
Item* node = new Item(name, age);

if ((m_head == m_tail) && (m_head == NULL))
{
m_head = node;
m_tail = node;
m_head->Next = NULL;
m_tail->Next = NULL;
m_len = 1;
}
else
{
m_tail->Next = node;
m_tail = m_tail->Next;
m_tail->Next = NULL;
m_len++;// …
[/Quote]
up
另外

Item(char* name, int age)
{
if (NULL == name)
{
m_name = new char[10];
strcpy(m_name, "未命名");
m_name[9]='\0';//加了这句
}
else
{
m_name = new char[strlen(name)+1];
strcpy(m_name, name);
m_name[strlen(name)]='\0';//加了这句
}
m_age = age;
Next = NULL;
}

goodname 2009-05-26
  • 打赏
  • 举报
回复
(*s)[2]->Display();
或者
list &sx = *s;
sx[2]->Display();

另外
void CreatNode(char* name, int age =0)
{
Item* node = new Item(name, age);

if ((m_head == m_tail) && (m_head == NULL))
{
m_head = node;
m_tail = node;
m_head->Next = NULL;
m_tail->Next = NULL;
m_len = 1;
}
else
{
m_tail->Next = node;
m_tail = m_tail->Next;
m_tail->Next = NULL;
m_len++;//<----------------------------这里需要+1
}
}
内容概要:本文系统研究了构网型变流器的正负序阻抗解耦特性及其在弱电网环境下的稳定性表现,重点依托Matlab/Simulink仿真平台,构建了详细的阻抗数学模型,设计了解耦控制策略,并采用小信号扫频法进行频域辨识与稳定性验证。研究深入探讨了构网型变流器与传统跟网型逆变器在正负序阻抗特性上的本质差异,结合虚拟同步发电机(VSG)等先进控制技术,分析其在抑制宽频带振荡、削弱锁相环动态耦合等方面的优越性。文中不仅提供了完整的仿真模型与MATLAB代码实现,还整合了光伏、风电、储能、微电网等多类新能源系统的阻抗建模与稳定性分析资源,形成了一套面向新型电力系统稳定性的综合性技术资料体系,具有较强的科研复现与工程参考价值。; 适合人群:面向具备电力电子、电力系统自动化、新能源并网等专业背景的研究生、高校教师及工程技术人员,特别适用于从事阻抗建模、小干扰稳定性分析、宽频振荡机理研究以及撰写高水平学术论文的科研工作者。; 使用场景及目标:①掌握构网型变流器正负序阻抗建模与扫频辨识的仿真方法;②深入理解VSG等构网型控制在弱电网中提升稳定性的内在机理;③复现顶刊论文中的阻抗分析流程与稳定性判据应用;④利用提供的成熟模型与代码加速科研进程,支撑课题研究与学术成果产出。; 阅读建议:建议结合文中提供的Simulink模型与MATLAB代码,按照“理论建模—仿真搭建—扫频激励—频响提取—Nyquist判据分析”的完整流程进行实践操作,重点关注扫频信号的注入方式、频率范围设置及阻抗曲线的物理意义解读,并参考博士论文复现案例深化对复杂动态耦合问题的理解。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧