/******************************************************************************/
/* */
/* FILE: october.cpp */
/* */
/* Bringing some order into a heap of characters with overloaded operators */
/* ======================================================================= */
/* */
/* Compiled and tested with Visual C++ V6.0 */
/* */
/* V1.00 21-OCT-2001 P. Tellenbach http://www.heimetli.ch/ */
/* */
/******************************************************************************/
#include <iostream>
class Grusel
{
protected:
char *text ;
int end ;
public:
Grusel( char *txt ) : text(txt), end(strlen(txt))
{
}
~Grusel()
{
std::cout << std::endl ;
}
bool operator<( int pos )
{
return pos + pos + 1 < end ? (*this)[pos + pos + 1] : pos < end ;
}
bool operator>( int pos )
{
return (*this)[(pos << 1) + 2], pos > 0 ;
}
bool operator[]( int pos )
{
return *this < pos && std::cout.put(text[pos]).good() && *this > pos ;
}
} ;
int main()
{
return Grusel( "ol e l!Hlowrd" )[ 0 ] ;
}
Update 22. October 2021
Added the cstring-header and some const declarations.
/******************************************************************************/
/* */
/* FILE: october.cpp */
/* */
/* Bringing some order into a heap of characters with overloaded operators */
/* ======================================================================= */
/* */
/* Compiled and tested with Visual C++ V6.0 */
/* */
/* V1.00 21-OCT-2001 P. Tellenbach https://www.heimetli.ch/ */
/* */
/* Compiled and tested with g++ V10.2.1 */
/* */
/* V1.00 21-OCT-2021 P. Tellenbach https://www.heimetli.ch/ */
/* */
/******************************************************************************/
#include <iostream>
#include <cstring>
class Grusel
{
protected:
const char *text ;
int end ;
public:
Grusel( const char *txt ) : text(txt), end(strlen(txt))
{
}
~Grusel()
{
std::cout << std::endl ;
}
bool operator< int pos )
{
return pos + pos + 1 < end ? (*this)[pos + pos + 1] : pos < end ;
}
bool operator> int pos )
{
return (*this)[(pos << 1) + 2], pos > 0 ;
}
bool operator[]( int pos )
{
return *this < pos && std::cout.put(text[pos]).good() && *this > pos ;
}
} ;
int main()
{
return Grusel( "ol e l!Hlowrd" )[ 0 ] ;
}