#c #data-structures #stack
#c #структуры данных #стек
Вопрос:
РЕШАЕМАЯ: Я не могу понять, почему я получаю ошибку при попытке инициализировать стек здесь:
#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*
Класс stack находится здесь:
#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 "DebugStack.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:UsersDylandocumentsvisual studio 2010ProjectsStackDebugStack.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
Чтобы убедиться, что мой файл заголовка стека не конфликтует с STL или чем-то еще, я переименовал его в MyStack.h (да, начинайте смеяться):
#ifndef myStack_H
#define myStack_H
Комментарии:
1. Я не вижу ничего принципиально неправильного. Добавьте фактическое сообщение об ошибке, которое вы получаете.
2. Что делать
m_stack = new List;
?3. Как насчет того, чтобы просто
List m_stack;
вместо того, чтобы динамически выделять объект списка вообще?4. Не обращайте внимания на то, что говорит Intellisense, сообщает ли компилятор об ошибке? Также он должен быть
m_list(new List())
в списке инициализатора.5. @Dylan: Вам не нужно динамическое выделение для самого списка.
Ответ №1:
Эта ошибка :
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
Обычно это происходит, когда ваш проект неправильно настроен. Я предполагаю, что вы пишете консольное приложение, но вы выбрали в качестве типа проекта что-то другое, чем консольное приложение.
Комментарии:
1. Или, более простой случай заключается в том, что ни
main
в одном из двух связанных файлов не определена точка входа. 🙂2. @vhallac Ну, я надеюсь, что это не так 🙂
Ответ №2:
Эта ошибка компоновщика
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:UsersDylandocumentsvisual studio 2010ProjectsStackDebugStack.exe : fatal error LNK1120: 1 unresolved externals
означает, что компоновщик не может найти функцию main() . Вы пытаетесь создать исполняемый файл, поэтому у вас должен быть main() .
Кроме того, похоже, что вы отредактировали свой первоначальный вопрос, чтобы теперь он был чем-то другим. Это очень запутанно, потому что вопрос и ответы / комментарии больше не совпадают. Начните новый вопрос, если вы столкнетесь с другой проблемой.