C'est étrange, j'ai un souci avec mon code. Mon compilo me fait une erreur sur la ligne de déclaration de l'iterator :
C:\Documents and Settings\Administrator\My Documents\Programmation\Esoteric\Interpreter\Tape.hpp:11: error: expected `;' before "m_pointer"
Et voilà mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#ifndef TAPE_HPP_INCLUDED
#define TAPE_HPP_INCLUDED
 
#include <list>
#include "Memory.hpp"
 
template <class T>
class Tape : public Memory
{
private:
    std::list<T>::const_iterator m_pointer;
    std::list<T> m_data;
    T m_default_value;
public:
    Tape(T default_value)
    {
        m_data.clear();
        m_pointer = m_data.begin();
        m_default_value = default_value;
    }
 
    ~Tape()
    {
        m_data.clear();
        m_pointer = m_data.begin();
    }
 
    void Left(void)
    {
        if (m_pointer == m_data.begin())
        {
            m_data.push_front(m_default_value);
        }
        --m_pointer;
    }
 
    void Right(void)
    {
        if (m_pointer == m_data.end())
        {
            m_data.push_back(m_default_value);
        }
        ++m_pointer;
    }
 
    T Read(void)
    {
        return (*m_pointer);
    }
 
    void Write (T value)
    {
        (*m_pointer) = value;
    }
};
 
#endif // TAPE_HPP_INCLUDED
J'ai du caca dans les yeux ou quoi ?

Merci d'avance aux pros, moi je reste myope là.


EDIT de RESOLUTION : J'ai enfin trouvé l'explication sur le net : il manque le 'typename' devant mon iterator qu'il ne considère comme un nom de type.