#include <iostream>
using namespace std;

class Vektor {};

class Lichtstrecke; // <--- forward declaration

class Strecke
{
protected:
    Vektor _ort ;
    Vektor _richtung ;
 
/***  geschützte Konstruktoren  ***/
 
    // Initialisierungskonstruktor mit Anfangs- und Endpunkt von Objekt
    Strecke ( Vektor const& anfangspunkt, Vektor const& endpunkt );

public:
/***  Rechenmethoden  ***/
 
    // addiert einen Vektor zu der Strecke, also zum Orts- und Richtungsvektor
    void operator += ( Vektor const& vek ) ;
 
    // subtrahiert einen Vektor von der Strecke, also vom Orts- und Richtungsvektor
    void operator -= ( Vektor const& vek ) ;
 
/***  Interaktionsmethoden  ***/
 
    // gibt den Schnittpunkt von Objekt und str zurück
    Vektor operator & ( Strecke const& str ) const ;
 
/***  Rechenmethoden  ***/
 
    // gibt eine ausfallende Lichtstrecke zurück
    virtual Lichtstrecke operator <= ( Lichtstrecke const& lichtstrecke ) const = 0 ;
} ;

int main() {
	// your code goes here
	return 0;
}