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++毫无头绪。