/*.h of base class, the .cpp is empty*/
#ifndef ICDDLIST_H
#define ICDDLIST_H
template <typename T>
class ICircularDoubleDirectedList
{
public:
enum direction { FORWARD, BACKWARD };
virtual direction getCurrentDirection() const = 0;
};
#endif
/*.h of class*/
class CircularDoubleDirectedList:public ICircularDoubleDirectedList<int>
{
public:
CircularDoubleDirectedList();
~CircularDoubleDirectedList();
direction getCurrentDirection() const;
private:
direction currentDirection;
};
/*.cpp of class*/
#include <iostream>
CircularDoubleDirectedList::CircularDoubleDirectedList() {}
CircularDoubleDirectedList::~CircularDoubleDirectedList(){}
direction CircularDoubleDirectedList::getCurrentDirection() const {
return this->currentDirection;
}
LyouaCBvZiBiYXNlIGNsYXNzLCB0aGUgLmNwcCBpcyBlbXB0eSovCiNpZm5kZWYgSUNERExJU1RfSAojZGVmaW5lIElDRERMSVNUX0gKIAogCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBJQ2lyY3VsYXJEb3VibGVEaXJlY3RlZExpc3QKewpwdWJsaWM6CiAgICBlbnVtIGRpcmVjdGlvbiB7IEZPUldBUkQsIEJBQ0tXQVJEIH07CiAgICB2aXJ0dWFsIGRpcmVjdGlvbiBnZXRDdXJyZW50RGlyZWN0aW9uKCkgY29uc3QgPSAwOwp9OwogCiNlbmRpZgogCiAKLyouaCBvZiBjbGFzcyovCmNsYXNzIENpcmN1bGFyRG91YmxlRGlyZWN0ZWRMaXN0OnB1YmxpYyBJQ2lyY3VsYXJEb3VibGVEaXJlY3RlZExpc3Q8aW50Pgp7CiAgICBwdWJsaWM6CiAgICAgICAgQ2lyY3VsYXJEb3VibGVEaXJlY3RlZExpc3QoKTsKICAgICAgICB+Q2lyY3VsYXJEb3VibGVEaXJlY3RlZExpc3QoKTsKIAogICAgICAgIGRpcmVjdGlvbiBnZXRDdXJyZW50RGlyZWN0aW9uKCkgY29uc3Q7CiAKICAgIHByaXZhdGU6CiAgICAgICAgZGlyZWN0aW9uIGN1cnJlbnREaXJlY3Rpb247Cn07CiAKLyouY3BwIG9mIGNsYXNzKi8KI2luY2x1ZGUgPGlvc3RyZWFtPgogCkNpcmN1bGFyRG91YmxlRGlyZWN0ZWRMaXN0OjpDaXJjdWxhckRvdWJsZURpcmVjdGVkTGlzdCgpIHt9CkNpcmN1bGFyRG91YmxlRGlyZWN0ZWRMaXN0Ojp+Q2lyY3VsYXJEb3VibGVEaXJlY3RlZExpc3QoKXt9CiAKZGlyZWN0aW9uIENpcmN1bGFyRG91YmxlRGlyZWN0ZWRMaXN0OjpnZXRDdXJyZW50RGlyZWN0aW9uKCkgY29uc3QgewogICAgcmV0dXJuIHRoaXMtPmN1cnJlbnREaXJlY3Rpb247Cn0=