c++ 存放string类型的stack怎么做?

彩猪 2011-09-20 04:04:53
在看《c++编程思想》做习题的时候,有6-8一个题目是做一个存放string的stack

#ifndef STACK_H
#define STACK_H

class Stack
{
struct Link {
void* data;
Link* next;
Link(void* dta,Link* nxt);
~Link();
}* head;
public:
Stack();
~Stack();
void push(void* dat);
void* peek();
void* pop();
};
#endif "STACK_H"

#include "Stack.h"
#include <iostream>
using namespace std;

Stack::Link::Link(void* dat, Link* nxt)
{
data = dat;
next = next;
}

Stack::Link::~Link() {}

Stack::Stack()
{
head = 0 ;
}

void Stack::push(void* dat)
{
head = new Link(dat,head);
}

void* Stack::peek()
{
return head->data;
}

void* Stack::pop()
{
if(head == 0)
return 0;
void* result = head->data;
Link* oldHead = head;
head = head->next;
delete oldHead;
return result;
}
Stack::~Stack()
{
cout << "I was disconstructor" << endl;
}

然后F5在main中报错。
annot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'void *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

请问这种情况什么意思?怎么产生的?如何解决。我才学C++毫无头绪。
...全文
383 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryfdizuo 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 groanspring 的回复:]

引用 8 楼 dizuo 的回复:

Stack mystack;
mystack.Push( new string("hello") );
cout << *( (string*)mystack.pop() ) << endl;

其中 cout那行语句不明吧什么意思,能不能给说一下。为什么括号外面有个指针。
[/Quote]
pop出来的是void* 需要转化成string*类型
彩猪 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dizuo 的回复:]

Stack mystack;
mystack.Push( new string("hello") );
cout << *( (string*)mystack.pop() ) << endl;
[/Quote]
其中 cout那行语句不明吧什么意思,能不能给说一下。为什么括号外面有个指针。
ryfdizuo 2011-09-21
  • 打赏
  • 举报
回复
Stack mystack;
mystack.Push( new string("hello") );
cout << *( (string*)mystack.pop() ) << endl;
彩猪 2011-09-21
  • 打赏
  • 举报
回复
有什么书是讲STL源代码的吗?
hypokuang 2011-09-20
  • 打赏
  • 举报
回复
直接看STL的stack好了。
彩猪 2011-09-20
  • 打赏
  • 举报
回复
帮帮忙啊
彩猪 2011-09-20
  • 打赏
  • 举报
回复
帮忙写个装String的C++风格的Stack。谢谢我好好学学。
cattycat 2011-09-20
  • 打赏
  • 举报
回复
里边的类型应该是string* ,up 1楼。
jackyjkchen 2011-09-20
  • 打赏
  • 举报
回复
你这个根本就是纯C风格的stack

要存string得用string的指针,还要注意指针的生存期
jackyjkchen 2011-09-20
  • 打赏
  • 举报
回复
你这个根本就是纯C风格的stack

要存string得用string的指针,还要注意指针的生存期

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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