![]()
September 2001
Volume 19 Number 9GRAPHICS
Image Rotation Using OpenGL Texture Maps
Shehrzad Qureshi
Here's a new twist on rotating images efficiently.An Algorithm for Efficient Image Warping
Bob Lorenzen
Need to redo your image? Here's a nice algorithm to transform it as you like.FEATURES
A C++ Debug Stream for Win32
Mark Nelson
A simple class for printing trace statements while debugging in Windows just like in the Good Old Days.Extending the Standard Template Library with Association Classes
Eli Tilevich
These classes extend the STL container concepts to manage complex relationships among objects.C/C++ CONTRIBUTING EDITORS
Sutters Mill: Virtuality
Herb Sutter
Herb herewith expertly demystifies a little-known practice of expert designers. Read this or weep, Gentle Reader.The Standard Librarian: I/O and Function Objects
Matt Austern
The Standard C++ library is crafted for extensibility, but doing it right can stymie the best of us. Matt combines function objects with the right "traits" to intelligently extend IOStreams.Uncaught Exceptions: International Experts of Mystery
Bobby Schmidt
If you overlook a shameless play for Mrs. Meyers, Bobby serves up precious pointers on, well, pointers (smart ones anyway), and on the proper use of namespaces.DEPARTMENTS
Editors Forum
New Products
We Have Mail
C++ EXPERTS ON THE WEB
In this new, web-only component of CUJ, we continue publication of the columns that were popular in the former C++ Report magazine. The following articles are featured on the CUJ website this month:
"Conversations: Back to Base-ics"
by Jim Hyslop and Herb Sutter
When you are adding a new class to a project, and that class is very similar to an existing class, you will frequently have three options: publicly derive one class from the other, create a common base class from which both the new and existing classes will be derived, and implement one class in terms of the other class. What is the best way to choose among the three options?"From Mechanism to Method: Further Qualifications"
by Kevlin Henney
It's not enough that your pointers can be smart: they also need to be sensitive. In particular, sensitive to your qualifications. The use of const is key to a lot of good C++ design, and there is a body of received wisdom on const-correctness. However, things get a little more interesting when you want to use smart pointers and differentiate between const and non-const target objects. This month's column explores the issues and the techniques to address them. As with all sensitivity, it is a matter of understanding."The (B)Leading Edge: Using the XDR_Stream Class"
by Jack W. Reeves
Last time Jack described the implementation of an IOStream style class that would encode/decode an XDR stream. In this column, he examines using that class to build some simple object persistence mechanisms. In the process, he discovers some things that can be improved about the design of XDR_Stream. He provides an in-depth look at his thinking as he attempts to evolve the XDR_Stream class into a truly useful, general purpose, reusable class.