C++ Практика Наследование
Материал из SEWiki
Реализовать класс FileOutputStream
class FileOutputStream { FileOutputStream( char* filename ) : file_(fopen(filename, "w")) {} void print( int t ) void print( double t ) void print(char* name) void flush() ~FileOutputStream( ) { fclose(file_); } protected: FileOutputStream( FILE * file ) : file_(file) {} private: FileOutputStream& operator=(FileOutputStream const&); FileOutputStream(FileOutputStream const&); private: FILE * file_; };
На основе FileOutputStream реализовать класс ConsoleOutputStream c дополнительным методом setColor(XXX)
class ConsoleOutputStream : FileOutputStream {
ConsoleOutputStream() : FileOutputStream( stdout ) {} XXX setColor(XXX) ~ConsoleOutputStream() { }
};
Как работать с цветами
- include <stdio.h>
- define ANSI_COLOR_RED "\x1b[31m"
- define ANSI_COLOR_GREEN "\x1b[32m"
- define ANSI_COLOR_YELLOW "\x1b[33m"
- define ANSI_COLOR_BLUE "\x1b[34m"
- define ANSI_COLOR_MAGENTA "\x1b[35m"
- define ANSI_COLOR_CYAN "\x1b[36m"
- define ANSI_COLOR_RESET "\x1b[0m"
int main (int argc, char const *argv[]) { printf(ANSI_COLOR_RED "This text is RED!" ANSI_COLOR_RESET "\n"); printf(ANSI_COLOR_GREEN "This text is GREEN!" ANSI_COLOR_RESET "\n"); printf(ANSI_COLOR_YELLOW "This text is YELLOW!" ANSI_COLOR_RESET "\n"); printf(ANSI_COLOR_BLUE "This text is BLUE!" ANSI_COLOR_RESET "\n"); printf(ANSI_COLOR_MAGENTA "This text is MAGENTA!" ANSI_COLOR_RESET "\n"); printf(ANSI_COLOR_CYAN "This text is CYAN!" ANSI_COLOR_RESET "\n"); printf(ANSI_COLOR_RED); printf("This text is RED!"); printf(ANSI_COLOR_RESET "\n"); printf(ANSI_COLOR_GREEN); printf("This text is RED!"); printf(ANSI_COLOR_RESET "\n"); return 0; }
На основе FileOutputStream реализовать класс ErrorOutputStream, в котором методы используются для вывода сообщений об ошибках (дополнительно печатают, откуда был вызван метод)
Нужно использовать макросы: __FUNCTION__, __FILE__, __LINE__
сlass ErrorOutputStream : FileOutputStream { ErrorOutputStream() : FileOutputStream( stderr ) {} void print(char* name, char* file, char* func, int line) ~ErrorOutputStream() { } };