Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Не получается создать библиотеку


Автор: DellXT 21.11.2018, 22:37
Всем привет. Столкнулся с интересной задачей - создать библиотеку для графической визуализации консольного окна. Т.е. по командам должны меняться цвет фона/текста, место текста в окне, размер шрифта. Также доступна возможность создать текстовое поле, цвет и размер которого можно выбирать. Что-то у меня уже есть. Но проблема в том, что оно даже не компилируется.

Win.cpp
Код

#include "win.h"
namespace lng{
HANDLE console=GetStdHandle(STD_OUTPUT_HANDLE);

   class colorClass
    short color;
  public:
    bool setcolor(short);
    short getcolor();

colorClass::colorClass(){
  color = 0b00001111;
};
colorClass::~colorClass(){
  SetConsoleTextAttribute(console,15);
};
short colorClass::getcolor(){ return color; };
bool  colorClass::setcolor(short color) {
  this->spalva = spalva;
  return true;
};
 cordinatesClass
    CORD cordinate;
  public:
    bool setcord(CORD);
    alternative: bool setcord(short, short);
    CORD getcord();
    alternative: void getcord(short&, short&);
cordinatesClass::cordinatesClass(){
  cordinate.X = 5; cordinate.Y = 5;
}
void cordinatesClass::getcord(short& X, short& Y){
  X=cordinate.X;
  Y=cordinate.Y;
}
bool cordinatesClass::setcord(short X, short Y){
  this->cordinate.X = X;
  this->cordinate.Y = Y;
  return true;
}
winClass :public colorClass
  cordinatesClass cord, size;
    bool doubleline, frame;
    bool setcolor(short);
    short getcolor();
    winClass();
  ~winClass();
  void draw();
  bool setcord(short, short);
  bool setsize(short, short);
  void setframe(bool);
  void setline(bool);
winClass::winClass(){
  doubleline=true;
  frame=true;
}
void winClass::draw(){
  short tempX, tempY;
  this->cord.getcord(tempX, tempY);
  CORD tempK={tempX, tempY};
  SetConsoleTextAttribute(console, this->getcolor());
  this->size.getcord(tempX, tempY);
  for(int y=0; y<tempY; y++)
  {
    tempK.Y = tempY + y;
    SetConsoleCursorPosition(console, tempK);
    std::cout << std::setw(tempX)<< ' ';
  }
  }
bool winClass::setcord(short cordinateX, short cordinateY){
  this->cord.setcord(cordinateX, cordinateY);
};
bool winClass::setsize(short sizeX, short sizeY){
};
void winClass::setframe(bool showframe){
};
void winClass::setline(bool doubleline){
};
}


Win.h
Код

#ifndef WIN_H
#define WIN_H
#include <windows.h>
#include <iostream>
#include <iomanip>

namespace lng{
class colorClass{
private:
    short color;
public:
  colorClass();
  ~colorClass();
    bool setcolor(short);
    short getcolor();
};

class cordinatesClass{
    CORD cordinate;
public:
  cordinatesClass();
    bool setcord(short, short);
    void getcord(short&, short&);
};

class winClass:public colorClass {
private:
  cordinatesClass cord, size;
  bool doubleline, frame;
public:
  bool setcolor(short);
  short getcolor();
    winClass();
  void draw();
  bool setcord(short, short);
  bool setsize(short, short);
  void setframe(bool);
  void setline(bool);
};

class textClass : public winClass {
private:
  std::string text;
public:
  bool settext(std::string);
  void draw();
};
}
#endif


Main.cpp
Код

#include <iostream>
#include "win.h"
using namespace std;

int main() {
  lng::winClass newwin, nextwin;
  newwin.setcolor(0b00011010);
  newwin.draw();
  return 0;
}


Помогите разобраться в коде. А то без очевидного результата не могу опознать что в нем хорошо, а что нет.

Автор: xvr 22.11.2018, 11:11
У вас в win.cpp затесались какие то ошмётки от win.h (в строках 5-9, 22-28, 41-52). Уберите

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)