In the FOX description:
>That hurts me, and I think to myself, "Why don't
>they provide a class for this? Why does someone
>write a library in C++ if he misses some of the
>fundamental concepts of the language, like data
I believe it is the author of the article, not the authors of FOX who miss the point of C++. The point of Java is to force programmers to use object oriented programming, with one specific object oriented paradigm/style. If a programmer fails to use data encapsulation, etc. then they are missing the point of Java.
In C++, the point is to give the programmer a general set of tools, and rely on the programmer to pick the right programming paradigm. Sometimes this is object oriented, of one of the many styles/paradigms thereof. Sometimes, it's template-based, and sometimes it's structured. It's designed to provide as much flexibility as possible, and rely on the programmer to use discipline to maintain consistancy with whatever style they choose. This means there are properly designed pieces of C++ code that explicitly do not use encapsulation/data hiding. Languages like Java were created as a reaction to languages like C++, where the language designers found that significant numbers of mediocre programmers, as well as almost all beginners, were misusing the language, and so tried to force a specific paradigm onto the programmer.
I've never used FOX, so they may be misdesigning something, but this isn't by missing the concepts of the language. If you want to have the language to have concepts about how a person should program, go with a language designed for beginners or mediocre programmers, like Java or Pascal. C++ ain't got it.
On a side note, to the person who posted "Another set of opinions," it is very much not true that "Qt is by most accounts the best designed, fullest featured, and fastest to work with C++ GUI toolkit out there." Look at the number of Gnome developers, most of whom would disagree. I mostly dislike Qt because it is very heavy-weight, and forces a lifestyle change. It forces me into a very specific programming paradigm, programming language, requires me to structure my code around the structure of the toolkit, wants me to run my code through additional compilers, etc. I can, for instance, take an arbitrary piece of code, and add a GTK interface to it, or take a properly written piece of GTK code, and make it into a text-mode version. With Qt, I have to restructure my code to fit Qt's world view, and once Qt is merged into a bit of code, getting its grubby claws out is a royal pain.
I guess another way of putting it is that Qt is an application framework, rather than just a GUI toolkit. GTK has application frameworks on top of it, just as the Windows API has MFC on top of it (which is actually lighter-weight than Qt), but both allow access to the GUI toolkit without requiring the framework. This isn't the case for Qt. This limits a significant set of apps I would want to write
Qt is nice for very rapid prototyping of applications, and having the amount of framework they include and require is nice for most (but not all) applications. However, I find the lack of flexibility, in terms of global program structure and style, languages, etc. to make it fairly subideal as a general-purpose GUI toolkit. This bites you whenever you're doing anything non-standard, and in a lot of cases, where you are using two libraries with the same sort of take-over-the-world approach, but an incompatible way of taking over. I don't think a GUI toolkit that only works for 90% of the applications out there is a good solution.
It really should be called 'wankread' instead.