/*############################################################################# ## Author: Shaun Reed ## ## Legal: All Content (c) 2019 Shaun Reed, all rights reserved ## ## Requires SDL: `sudo apt-get install libsdl2-dev` ## ## To build an executable: `g++ inherited.cpp -lSDL2 -o test` ## ## ## ## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## ############################################################################## ## apps/inherited.cpp */ #include #include #include #include class Shape { private: double width, height; std::string info; const std::string name = "Shape"; public: Shape(double w, double h) { height = h; width = w; }; Shape() { height = 2; width = 2; }; ~Shape() { /* Shape destructor */}; virtual const std::string PrintInfo() { info = name + " HxW: " + std::to_string(height) + "x" + std::to_string(width); return info; }; }; class Rectangle: public Shape { private: double width, height; std::string info; public: Rectangle(double w, double h) { height = h; width = w; }; Rectangle() { height = 2; width = 4; }; ~Rectangle() { /* Rectangle destructor */ }; }; int InitScreen(SDL_Window* &window, SDL_Renderer* &renderer) { int state = 0; // Create window, renderer to draw to screen if (SDL_CreateWindowAndRenderer(500, 500, 0, &window, &renderer) < 0) { std::cout << "Error - Unable to create SDL screen and renderer objects\n"; state = -1; } // Set render DrawColor, fill screen with color if (SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255) < 0 || SDL_RenderClear(renderer) < 0) { std::cout << "Error - Unable to set renderer draw color\n"; state = -1; } return state; } void DrawDelay(SDL_Renderer* renderer, int delay) { // Show what we have rendered SDL_RenderPresent(renderer); // Wait 3000ms, then continue SDL_Delay(delay); return; } int main (int argc, char const * argv[]) { // Cast cli arguments to void since they are unused in this exe (void)argc; (void)argv; // Ensure SDL is initialized before continuing if (SDL_Init(SDL_INIT_EVERYTHING) < 0) exit(2); SDL_Window *window; SDL_Renderer *renderer; if (InitScreen(window, renderer) < 0) std::cout << "Error - Unable to initialize SDL screen\n"; DrawDelay(renderer, 3000); std::cout << "Test\n"; Shape shape(4,4), dShape; Rectangle rect(4,8), dRect; std::cout << dShape.PrintInfo() << std::endl; std::cout << shape.PrintInfo() << std::endl; std::cout << dRect.PrintInfo() << std::endl; std::cout << rect.PrintInfo() << std::endl; return 0; }