【问题标题】:C++ stack implementation (homework)C++栈实现(作业)
【发布时间】:2011-12-04 21:45:23
【问题描述】:

已解决: 我一生都无法弄清楚为什么在尝试在这里初始化堆栈时会出错:

#include "stack.h"
#include "linkList.h"


Stack::Stack() : m_top(0), m_size(0)
{
    m_stack = new List(); // cannot assign m_stack this way. How do i initialize here?
}

根据 Intellisense 的语法错误如下:

Error: a value of type List* cannot be assigned to an entity of type List*

堆栈类在这里:

#ifndef stack_H
#define stack_H

#include "linkList.h"


class Stack
{
public:

    //
    // Constructor to initialize stack data
    //
    Stack();

    //
    // functionality to determine if stack is empty
    //
    bool isEmpty();

    //
    // methods for pushing data on to stack and for
    // popping data from the stack
    //
    void push(Node* current, int newValue);
    void pop();

private:

    //
    // member data which represent the stack, the top
    // of the stack and the size of the stack
    //
    Node* m_top;
    List* m_stack;
    unsigned m_size;
};

#endif

我知道 linkList 类有效,因为我之前测试过它。如果我想创建一个新列表,我所要做的就是:

List* myList = new List();

已解决:现在我遇到了一些令人恼火的链接器错误,我不知道为什么:

1>------ Build started: Project: Stack, Configuration: Debug Win32 ------
1>Build started 10/10/2011 4:50:24 PM.
1>InitializeBuildStatus:
1>  Touching "Debug\Stack.unsuccessfulbuild".
1>ClCompile:
1>  myStack.cpp
1>  linkList.cpp
1>  Generating Code...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:\Users\Dylan\documents\visual studio 2010\Projects\Stack\Debug\Stack.exe : fatal error        LNK1120: 1 unresolved externals
1>
1>Build FAILED.

为了确保我的堆栈头文件不与 STL 或其他文件冲突,我将其重命名为 myStack.h(是的,开始大笑):

#ifndef myStack_H
#define myStack_H

【问题讨论】:

  • 我看不出有什么根本上的错误。添加您收到的实际错误消息。
  • m_stack = new List; 呢?
  • 只使用List m_stack; 而不是动态分配 List 对象怎么样?
  • 无视 Intellisense 的说法,编译器会报错吗?在初始化列表中也应该是m_list(new List())
  • @Dylan:列表本身不需要动态分配。

标签: c++ data-structures stack


【解决方案1】:

此链接器错误

1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:\Users\Dylan\documents\visual studio 2010\Projects\Stack\Debug\Stack.exe : fatal error        LNK1120: 1 unresolved externals

表示链接器找不到 main() 函数。你正在尝试制作一个可执行文件,所以你必须有一个 main()。

此外,您似乎已将原始问题编辑为其他问题。这非常令人困惑,因为问题和答案/cmets 不再匹配。如果遇到其他问题,请提出新问题。

【讨论】:

    【解决方案2】:

    这个错误:

    1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
    

    通常在您的项目设置错误时发生。我猜您正在编写一个控制台应用程序,但您选择的项目类型不是控制台应用程序。

    【讨论】:

    • 或者,更简单的情况是在被链接的两个文件中的任何一个中都没有定义入口点main。 :)
    • @vhallac 好吧,我希望不是这样 :)
    猜你喜欢
    • 2011-12-04
    • 2010-11-27
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2017-06-30
    相关资源
    最近更新 更多