Форум программистов, компьютерный форум CyberForum.ru

"undefined reference" при инклюде внешних классов/библиотек - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ клас Letter, клас Person http://www.cyberforum.ru/cpp-beginners/thread891244.html
Створити клас Letter, що мiстить наступнi елементи: - поле «вiдправник» Person*Sender; - поле «одержувач» Person*Receiver; - поле «адреса» char*Address; - метод вiдправлення листа int Send(); (якщо хоча б одне поле не заповнене, то noвiдомиmи про помилку - повернути 1, iнакше 0); - метод одержания адресноi iнформацii (ПIБ+ПIБ+адреса) char*Getlnfo(); - конструктор з параметрами...
C++ Разбиение программы на несколько частей Вот задание: Стрелок производит по мишени 5 выстрелов. Вероятность попадания в мишень при каждом выстреле 0.6. Вычислить вероятность того, что стрелок не попадет в мишень ни pазу; попадет 1 pаз; 2 pаза;...; 5 pаз. Определить, вероятность скольких попаданий будет max? Примечание: Вероятность попадания p при одном выстреле равна 0.6, вероятность промаха q=0.4. Получается посчитать только... http://www.cyberforum.ru/cpp-beginners/thread891239.html
C++ здравствйте вытащите код
здравствуйте помогите вытащить код из программы с расширением exe вот из этой проги вытащите код
C++ Опишите поподробней пожалуйста
Опишите пожалуйста как это делается. В числе 33*3* дописать три цифры так, чтобы полученное число делилось на 55. Добавлено через 19 минут Спасибо, сам разобрался. #include <math.h> using namespace std; int main() {
C++ одномерные массивы (попадание точки на плоскость) http://www.cyberforum.ru/cpp-beginners/thread891223.html
Лабораторная работа 5. одномерные массивы * * Для задач этого раздела необходимо составить графический алгоритм, провести идентификацию переменных, составить программу и решить задачу на ЭВМ. Даны координаты точек х1, у1, х2, у2, ... х15, у15. Если точка попадает на плоскость, ограниченную кругом x2 + y2 = R2, то вывести на печать координаты этой точки и сообщение «ТОЧКА В ПЛОСКОСТИ»; если...
C++ Циклические программы с регулярной сменой аргумента, содержащих разветвления Лабораторная работа 4. Циклические программы с регулярной сменой аргумента, содержащих разветвления 4.6 вычислить разницу между максимальным и минимальным значением функции: Аргумент х изменяется от начального значения 0.1 с шагом 0.32 до конечного 6.5 подробнее

Показать сообщение отдельно
msifeed
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 10

"undefined reference" при инклюде внешних классов/библиотек - C++

04.06.2013, 21:15. Просмотров 1306. Ответов 10
Метки (Все метки)

Используется:
Eclipse CDT, MinGW

Немного сырцов:
Stack.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef STACK_H_
#define STACK_H_
 
template<class T>
class ComplexStack {
private:
    T d;
    struct ComplexStack *next;
public:
    void push(ComplexStack* &stack, T d);
    T pop(ComplexStack* &stack);
    void clear(ComplexStack* &stack);
};
 
template<class T>
class Stack: ComplexStack<T> {
private:
    ComplexStack<T> * cs;
public:
    void push(T in);
    T pop();
    void clear();
};
 
#endif /* STACK_H_ */

Stack.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "Stack.h"
 
template<class T>
void ComplexStack<T>::push(ComplexStack* &stack, T d) {
    ComplexStack *pv = new ComplexStack;
    pv->d = d;
    pv->next = stack->next;
    stack = pv;
}
 
template<class T>
T ComplexStack<T>::pop(ComplexStack* &stack) {
    if (!stack)
        return 0;
    T temp = stack->d;
    ComplexStack *pv = stack;
    stack = stack->next;
    delete pv;
    return temp;
}
 
template<class T>
void ComplexStack<T>::clear(ComplexStack* &stack) {
    ComplexStack *temp;
    while (stack) {
        temp = stack;
        stack = stack->next;
        delete temp;
    }
}
 
template<class T>
void Stack<T>::push(T in) {
    cs->push(cs, in);
}
template<class T>
T Stack<T>::pop() {
    if (!cs)
        return 0;
    return cs->pop(cs);
}
template<class T>
void Stack<T>::clear() {
    cs->clear(cs);
}

И главный, толстый boapSL2.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include "Stack.h"
 
using namespace std;
 
int main() {
    Stack<int> s;
    s.push(10);
    cout << s.pop();
    return 0;
}

Как ругается g++ и отказывается компилить:
Код
Info: Internal Builder is used for build
g++ -o boapSL2.exe "src\\boapSL2.o" "src\\Stack.o" 
src\boapSL2.o: In function `main':
F:\Workspace\boapSL2\Debug/../src/boapSL2.cpp:8: undefined reference to `Stack<int>::push(int)'
F:\Workspace\boapSL2\Debug/../src/boapSL2.cpp:9: undefined reference to `Stack<int>::pop()'
collect2: выполнение ld завершилось с кодом возврата 1
Что пробывалось:
1. Гуглить (С переменным успехом)
2. Составлять *.a библиотеки со стеком и приписывать их к компилятору (-lstack)
3. Инклюдать все и куда попало

О чем же я прошу:
Как присоединять внешние классы/библиотеки(в Eclipse CDT) или что поправить, чтобы ВСЕ находило, компилило и работало.

П.С Чувствую у меня тут банальная ошибка в коде, укажите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru