C ++从堆栈中检索指针

时间:2016-10-18 22:01:45

标签: c++

我有这种格式的课程:

class polarity {
public:
    void method1();
    void method2();


    polarity();
    ~polarity();
private:

    stack<type*>  carbon;
    vector<scientist*>   sci;

};

这里是method1:

void polarity::method1(){

    type * object1;
    object1 = new type();
    unsigned int i;


        for(i = 0; i <carbon.size() ; ++i){         
            object1 = carbon.pop();
            /*Do something with object1*/
        }
} 

当我运行程序时,我收到此错误

Error   1   error C2440: '=' : cannot convert from 'void' to 'type *'   

我不明白这意味着什么。我只是用一些类型的指针填充堆栈。但是我无法找回这些指针 我很感激你的帮助。

2 个答案:

答案 0 :(得分:4)

stack弹出的方法会返回void,因为只会从堆栈中弹出元素,可能您正在寻找carbon.top(),但我不知道您要实现的目标< / p>

答案 1 :(得分:2)

pop()函数是一个void函数:

void pop();
  

从堆栈中删除顶部元素。有效地调用c.pop_back()。

因此,当您为返回type*的函数指定void时,会出现该错误。

正如你在这里看到的那样:

  object1 = carbon.pop();

当您弹出carbon时,您返回的void不属于type类型。因此得到错误:

  

错误1错误C2440:'=':无法从'void'转换为'type *'

请参阅 here 以获取参考资料

解决方案

您正在寻找top()。所以现在你可以这样做:

  object1 = carbon.top();

请参阅 here ,了解top()