TheFuzz
TheFuzz

Reputation: 2623

placing functions to be used by any derived classes in the base class?

class tabBase
{

public:
    tabBase() { }
    virtual ~tabBase() { }

    virtual void write() {}
    virtual void read() {}
    virtual void start() {}
    virtual void stop() {}
    virtual void connect() {}
    virtual void disconnect() {}
    virtual void openFile() {}
    virtual void closeFile() {}
    virtual void searchForText() {}

};

class tcpServerTab : public tabBase
{

public:
    tcpServerTab() { /* ...code... */ }
    virtual ~tcpServerTab() { /* ...code... */ }

    virtual void write() { /* ...code... */ }
    virtual void read() { /* ...code... */ }
    virtual void start() { /* ...code... */ }
    virtual void stop() { /* ...code... */ }

};

class tcpClientTab : public tabBase
{

public:
    tcpClientTab() { /* ...code... */ }
    virtual ~tcpClientTab() { /* ...code... */ }

    virtual void write() { /* ...code... */ }
    virtual void read() { /* ...code... */ }
    virtual void start() { /* ...code... */ }
    virtual void stop() { /* ...code... */ }

    virtual void connect() { /* ...code... */ }
    virtual void disconnect() { /* ...code... */ }

};

class plainTextTab : public tabBase
{

public:
    plainTextTab() { /* ...code... */ }
    virtual ~plainTextTab() { /* ...code... */ }

    virtual void openFile() { /* ...code... */ }
    virtual void closeFile() { /* ...code... */ }
    virtual void searchForText() { /* ...code... */ }

};

Are there or can there be any design issues or unforeseen consequences with placing all possible functions to be used by any derived classes in the base class like the above example does?

Upvotes: 2

Views: 75

Answers (1)

TX_
TX_

Reputation: 5466

If you want to ensure (force) that all of those functions will be implemented in all derived classes, you should make them pure virtual. Otherwise trying to predetermine and list all possible functions with empty bodies just does not make much sense. Judging by your example it seems that you need more than one level of inheritance.

Upvotes: 2

Related Questions