首页 > 解决方案 > 为什么链接器在 Ubuntu 上找不到这个析构函数

问题描述

有一个控制台应用程序,我把它写成自我改进的一部分。有时我在 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

报警系统.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

主控制台控制器.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();
    }
}
...

谁能告诉我问题是什么?

标签: c++ubuntug++

解决方案


推荐阅读