#c #ubuntu #g
#c #ubuntu #g
Вопрос:
Есть консольное приложение, я пишу его в рамках самосовершенствования. Иногда я пишу в Windows, иногда в Ubuntu. До некоторого времени проблем не было. Внезапно теперь со следующими настройками в Ubuntu, при запуске: g AlarmSystem.cpp -o main
, я получаю ошибку такого типа:
/usr/bin/ld: /tmp/cchydRcW.o: in function `main': AlarmSystem.cpp:(.text 0x43): undefined reference to `MainConsoleController::MainConsoleController()'
/usr/bin/ld: AlarmSystem.cpp:(.text 0x57): undefined reference to `MainConsoleController::~MainConsoleController()'
collect2: error: ld
returned 1 exit status
AlarmSystem.cpp
#include "MainConsoleController.h"
int main()
{
MainConsoleController m = MainConsoleController();
return 0;
}
MainConsoleController.h
#pragma once
#ifndef MAIN_CONSOLE_CONTROLLER_H
#define MAIN_CONSOLE_CONTROLLER_H
#include <iostream>
#include "MainConsoleView.h"
#include "MainConsole.h"
class MainConsoleController
{
private:
std::string _currentCommand;
Commands _command;
MainConsoleView _view;
MainConsole _model;
bool _isWorking;
public:
MainConsoleController();
virtual ~MainConsoleController();
void CheckInput();
void MainLoop();
void ConvertInput();
void MakeCommand();
};
#endif
MainConsoleController.cpp
#include "MainConsoleController.h"
MainConsoleController::MainConsoleController()
{
this->_isWorking = true;
MainLoop();
}
MainConsoleController::~MainConsoleController()
{
}
void MainConsoleController::CheckInput()
{
std::cin >> this->_currentCommand;
}
void MainConsoleController::MainLoop()
{
this->_view.PrintWelcome();
while (this->_isWorking)
{
CheckInput();
ConvertInput();
MakeCommand();
}
}
...
Кто-нибудь может сказать мне, в чем проблема?
Комментарии:
1. Тактическое замечание: используйте правило нуля . Похоже, что деструктор не
MainConsoleController
нужен.virtual ~MainConsoleController() = defau<
в объявлении должно быть достаточно2.
g AlarmSystem.cpp MainConsoleController.cpp -o main
должно сработать, хотя на самом деле это должно быть как минимумg -Wall -Wextra AlarmSystem.cpp MainConsoleController.cpp -o main
3. Обычно я
-pedantic
также придерживаюсь4. @user4581301 хороший совет. Ваш намек показал мне, что у меня есть и другие подобные проблемы. Но приведенная выше ошибка исправила ее. Спасибо.
5. @user4581301
-pedantic
, к сожалению, мне ни в чем не помог. Я уже пробовал раньше.