The Stream class has pure virtual methods which must be implemented in derived not abstract class.
The pure virtual method from base class Print is:
virtual size_t write(uint8_t) = 0;
The pure virtual methods from Stream are:
virtual int available() = 0;
virtual int read() = 0;
virtual int peek() = 0;
additionally add in your class the line
using Print::write;
to pull in overloaded methods write(str) and write(buf, size) fromPrint
Here I have an example of a simple class derived from Stream.
EDIT: Most of your question seemed to focus on wrapping some Stream implementation. Now I see that you maybe want to enhance the SoftwareSerial class and add a new method in the inherited class. It is simple:
MySerial.h
#ifndef _MYSERIAL_H_
#define _MYSERIAL_H_
#include <SoftwareSerial.h>
class MySerial: public SoftwareSerial {
private:
int param;
public:
MySerial(uint8_t receivePin, uint8_t transmitPin) :
SoftwareSerial(receivePin, transmitPin, false) {
param = 0;
}
void resend(char c) {
write(c);
}
};
#endif
MySerial.ino
#include "MySerial.h"
MySerial mySerial(6, 7);
void setup() {
mySerial.begin(9600);
}
void loop() {
if (mySerial.available()) {
int c = mySerial.read();
mySerial.resend(c);
}
}