ну вот, переделал:
main.cpp
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #include <iostream.h>
#include "win.h"
int main( void )
{
win_lib w1( 10, 10, 20, 20, 0x10, 0x17 );
win_lib w2( 11, 12, 18, 17, 0xA7, 0x16 );
w1.open();
system( "pause" );
w2.open();
system( "pause" );
w2.close();
system( "pause" );
w1.close();
system( "pause" );
return 0;
} |
|
win.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
| #include <stdlib.h>
class win_lib
{
public:
win_lib( int sx, int sy, int ex, int ey, int br, int fr)
{
vid_mem = ( char* )0xB8000000L;
buffer = ( char* ) malloc( ( ex - sx + 1 ) * ( ey-sy ) * 2 );
startx = sx;
endx = ex;
starty = sy;
endy = ey;
bcolor = br;
fcolor = fr;
}
void open( void );
void close( void );
private:
//int writechar( void );
//int clear( void );
char *vid_mem;
int startx, starty, endx, endy;
int bcolor, fcolor;
char *name;
char *buffer;
}; |
|
win.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
| #include "win.h"
void win_lib::open( void )
{
char *v;
int k = 0;
for( int i = win_lib::startx; i <= win_lib::endx; i++ )
{
for( int j = win_lib::starty; j <= win_lib::endy; j++ )
{
v = win_lib::vid_mem + ( i * 160 ) + ( j * 2 );
win_lib::buffer[ k ] = *v;
v++;
k++;
win_lib::buffer[ k ] = *v;
k++;
}
}
//clear();
}
void win_lib::close( void )
{
char *v;
int k = 0;
for( int i = win_lib::startx; i <= win_lib::endx; i++ )
{
for( int j = win_lib::starty; j <= win_lib::endy; j++ )
{
v = win_lib::vid_mem + ( i * 160 ) + ( j * 2 );
*v = win_lib::buffer[ k ];
v++;
k++;
*v = win_lib::buffer[ k ];
k++;
}
}
} |
|
Собственно предыдущие ошибки теперь не в моде (хотя я так и не понял что изменилось от того что мы все функции вынесли в другой класс, а конструктор оставили...ну не суть), у нас теперь ошибка линковки:
Linker Error: win_lib::close() defined in module WIN.CPP is duplicated in module WIN.CPP
Linker Error: win_lib::open() defined in module WIN.CPP is duplicated in module WIN.CPP