Вот этот код у меня ошибок не выдаёт:
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| template <class T> class Stack
{
T *st;
int top, m;
public:
Stack();
~Stack();
void Push(T);
T Pop();
int Gettop();
};
template <class T> Stack<T>::Stack(): st(0), top(0), m(0)
{}
template <class T> Stack<T>::~Stack()
{
delete [] st;
}
template <class T> void Stack<T>::Push(T ch)
{
if(m && !(m - top))
{
T *t = st;
st = new T[m += n];
for(int i = 0; i <= top; i++)
st[i] = t[i];
delete [] t;
}
else if(!m)
{
m = n;
st = new T[m];
}
st[top++] = ch;
}
template <class T> T Stack<T>::Pop()
{
if(m && (m - top > n + n))
{
T *t = st;
st = new T[m -= n];
for(int i = 0; i <= top; i++)
st[i] = t[i];
delete [] t;
}
return st[top--];
}
template <class T> int Stack<T>::Gettop()
{
return top;
}
class Express
{
Stack <char> s;
char *str;
int len;
public:
Express();
Express(const char *);
};
Express::Express(): str(0), len(0)
{}
Express::Express(const char *ss)
{
len = strlen(ss);
str = new char[len + 1];
strcpy(str, ss);
}
int main()
{
Express exp;
} |
|
У вас шаблон и реализация в одном файле находятся? Должны быть в одном. У вас, скорее всего, ошибка именно поэтому. Компоновщик не находит реализацию конструктора по умолчанию.