Неопределенная ссылка при попытке компиляции с использованием g++ в C++ [дубликат] ⇐ C++
Неопределенная ссылка при попытке компиляции с использованием g++ в C++ [дубликат]
У меня есть 5 файлов: Bst.h, Bst.cpp, Car.cpp, Car.h и main.cpp.
В Bst.cpp я включил Bst.h: #include "Bst.h"
В Car.cpp я включил «Car.h»:
#include "Car.h"
В main.cpp я включил файлы заголовков:
#include "Bst.h" #include "Car.h" #include Проблема в том, что когда я пытаюсь скомпилировать с помощью этой команды: g++ -o main main.cpp Bst.cpp Car.cpp, я получаю ошибки о неопределенных ссылках на функции.
Например, я получаю сообщение об ошибке: C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../ x86_64-w64-mingw32/bin/ld.exe: main.o:main.cpp:(.text+0x52): неопределенная ссылка на BST::insert(std::shared_ptr&, int const&).
Мой файл bst.h выглядит так:
#ifndef __BST_H__ #define __BST_H__ #include .. .. шаблон класс БСТ { .. .. public: void Insert(NodePtr& node, const ValueType& value); .. .. }; #endif // __BST_H__ Bst.cpp:
#include "Bst.h" шаблон void BST::insert(NodePtr& node, const ValueType& value) { если (!узел) { node = std::make_shared(значение); возвращаться; } if (значение значение) { вставить (узел-> влево, значение); } еще { вставить (узел-> вправо, значение); } } и main.cpp:
#include "Bst.h" #include "Car.h" #include интервал основной(){ БСТ bst; bst.insert(bst.root, 10); вернуть 0; } Компиляция работает, когда в файл main.cpp я включаю файлы cpp вместо файлов заголовков и использую g++ -o main.exe main.cpp, но при этом теряется вся цель файлов заголовков. Все файлы находятся в одной папке. Вероятно, есть какие-то вопросы по этому поводу, но я не смог их найти, поэтому буду очень признателен за любую помощь.
У меня есть 5 файлов: Bst.h, Bst.cpp, Car.cpp, Car.h и main.cpp.
В Bst.cpp я включил Bst.h: #include "Bst.h"
В Car.cpp я включил «Car.h»:
#include "Car.h"
В main.cpp я включил файлы заголовков:
#include "Bst.h" #include "Car.h" #include Проблема в том, что когда я пытаюсь скомпилировать с помощью этой команды: g++ -o main main.cpp Bst.cpp Car.cpp, я получаю ошибки о неопределенных ссылках на функции.
Например, я получаю сообщение об ошибке: C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../ x86_64-w64-mingw32/bin/ld.exe: main.o:main.cpp:(.text+0x52): неопределенная ссылка на BST::insert(std::shared_ptr&, int const&).
Мой файл bst.h выглядит так:
#ifndef __BST_H__ #define __BST_H__ #include .. .. шаблон класс БСТ { .. .. public: void Insert(NodePtr& node, const ValueType& value); .. .. }; #endif // __BST_H__ Bst.cpp:
#include "Bst.h" шаблон void BST::insert(NodePtr& node, const ValueType& value) { если (!узел) { node = std::make_shared(значение); возвращаться; } if (значение значение) { вставить (узел-> влево, значение); } еще { вставить (узел-> вправо, значение); } } и main.cpp:
#include "Bst.h" #include "Car.h" #include интервал основной(){ БСТ bst; bst.insert(bst.root, 10); вернуть 0; } Компиляция работает, когда в файл main.cpp я включаю файлы cpp вместо файлов заголовков и использую g++ -o main.exe main.cpp, но при этом теряется вся цель файлов заголовков. Все файлы находятся в одной папке. Вероятно, есть какие-то вопросы по этому поводу, но я не смог их найти, поэтому буду очень признателен за любую помощь.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение