Я пытаюсь использовать G ++ для компиляции кода на C ++. Кажется, он отлично работает в других компиляторах, но по какой-то причине G ++ не будет выдавать рабочий вывод.
Раскрытие информации: Это часть домашнего задания, но я чувствую, что это скорее проблема компилятора, так как он работает в других компиляторах.
Вот фрагмент кода, который сеет хаос:
set<int> t1, t2;
Это странно, потому что следующий код работает нормально:
set<int> *t1 = new set<int>();
set<int> *t2 = new set<int>();
Конечно, я должен использовать ->
вместо .
, но это ожидаемо. Первый фрагмент кода вызывает ошибку сегментации во время выполнения. Второй интуитивно делает то, что я ожидал.
Во всяком случае, за кадром, .cpp
для set
имеет это:
#include <cstdlib>
#include <iostream>
using namespace std;
template <class T>
set<T>::set() : bag<T>() {}
template <class T>
set<T>::set(const set<T>& b) : bag<T>(b) {}
.h
выглядит так:
#include "bag.h"
template <class T>
class set : public bag<T>
{
public:
set( );
set(const set &b);
// ...
};
#include "set.cpp"
И, наконец, файлы bag.cpp
и bag.h
выглядят так:
using namespace std;
template <class T>
bag<T>::bag() {
head = NULL;
}
template <class T>
bag<T>::bag(const bag<T>& b) {
// ...
}
и bag.h
:
template <class T>
class bag
{
public:
bag( );
bag(const bag &b);
// ...
};
#include "bag.cpp"
Опять же, я чувствую, что G ++ просто ненавидит меня, но опять же, я могу делать что-то глупое Было бы просто просто толкнуть в правильном направлении.