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

undefined reference to `CList<int>::show()' - C++

Восстановить пароль Регистрация
 
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
21.01.2013, 09:14     undefined reference to `CList<int>::show()' #1
привет ! написал этот код в eclipse
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef CLIST_H_
#define CLIST_H_
 
template<class T>
class CList
{
public:
    CList();
    void push_back(T);
    void show(void);
    virtual ~CList();
private:
    struct node
    {
        T data;
        node* next;
    };
    node* pnode;
};
 
#endif /* CLIST_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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "CList.h"
#include <iostream>
 
template<class T> void CList<T>::push_back(T value)
{
    node* tmp = new node;
    tmp->data = value;
    tmp->next = NULL;
    if(pnode == NULL)
        pnode = tmp;
    else
    {
        node* current = pnode;
        while(current->next != NULL)
            current = current->next;
        current->next = tmp;
    }
}
 
template<class T> void CList<T>::show(void)
{
    while(pnode != NULL)
    {
        std::cout<<pnode->data<<'\t';
        pnode = pnode->next;
    }
}
 
template<class T> CList<T>::CList()
{
    pnode = new node;
    pnode->next = NULL;
}
 
template<class T> CList<T>::~CList()
{
    delete pnode;
    pnode = NULL;
}

C#
1
2
3
4
5
6
7
8
9
10
11
12
#include "CList.h"
#include <iostream>
 
using namespace std;
 
int main()
{
    CList<int> list;
    list.push_back(34);
    list.show();
    return 0;
}

почему при компиляции вылетает такая ошибка ? что не так я делаю ?
Миниатюры
undefined reference to `CList<int>::show()'  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 09:14     undefined reference to `CList<int>::show()'
Посмотрите здесь:

[Linker error] undefined reference to `sterling(int, int, int)' C++
Ошибка при компиляции undefined reference to `List<int>::List()'| C++
C++ Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
C++ undefined reference
C++ undefined reference to `A::a'
undefined reference to C++
Undefined reference to C++
Undefined reference to Change_Array(int, int) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grindaah
20 / 20 / 0
Регистрация: 25.05.2011
Сообщений: 62
21.01.2013, 15:53     undefined reference to `CList<int>::show()' #2
http://www.parashift.com/c++-faq-lit...n-vs-decl.html

Clearly somebody somewhere is going to have to use the "pattern" for the constructor definition and for the someMethod() definition and instantiate those when T is actually int. But if you had put the definition of the constructor and someMethod() into file Foo.cpp, the compiler would see the template code when it compiled Foo.cpp and it would see Foo<int> when it compiled Bar.cpp, but there would never be a time when it saw both the template code and Foo<int>. So by rule #2 above, it could never generate the code for Foo<int>::someMethod().
Так что:
CList.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef CLIST_H_
#  define CLIST_H_
 
#include <iostream>
 
template<class T>
class CList
{
public:
    CList();
    void push_back(T);
    void show(void);
    virtual ~CList();
private:
    struct node
    {
        T data;
        node* next;
    };
    node* pnode;
};
 
template<class T>
CList<T>::CList()
{
    pnode = new node;
    pnode->next = NULL;
}
 
template<class T>
CList<T>::~CList()
{
    delete pnode;
    pnode = NULL;
}
 
template<class T>
void CList<T>::push_back(T value)
{
    node* tmp = new node;
    tmp->data = value;
    tmp->next = NULL;
    if(pnode == NULL)
        pnode = tmp;
    else
    {
        node* current = pnode;
        while(current->next != NULL)
            current = current->next;
        current->next = tmp;
    }
}
 
template<class T>
void CList<T>::show(void)
{
    while(pnode != NULL)
    {
        std::cout<<pnode->data<<'\t';
        pnode = pnode->next;
    }
}
 
 
#endif /* CLIST_H_ */
Yandex
Объявления
21.01.2013, 15:53     undefined reference to `CList<int>::show()'
Ответ Создать тему
Опции темы

Текущее время: 17:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru