"Jim Langston" <tazmaster@rocketmail.com> wrote in message
news:i9j7i2$73r$1@four.albasani.net...
I am developing a font class for my opengl graphics library and I
came across a quandry. I have a font which is simply a value for
font id and wrapper code to load the font and kill it. Works
fine, then I notice I don't have a virtual destructor, nor any
destructor at all. So I throw in a virtual destructor and call
the code to unload the glfont. I run the program, now no fonts
are visible. The problem is that my fonts are stored in a map by font
name and
the font, and of course std::maps along with most containers use
copy.
Resolution:
I used Microsoft Express 2010 C++0x utilization of std::move for
containers.
I had a problem implementing this because when I first created a
move constructor I was still using assignment in my code. I
disbled the assignment operator and fixed my code and it works as
advertised. I had to change the elegant line of:
world.fonts[L"Normal"] = jmlGL::jglFont( hDC, L"Courier New",
24 ); to the no where near as elegant line of:
world.fonts.insert(std::pair<std::wstring, jmlGL::jglFont>(
L"Normal", jmlGL::jglFont( hDC, L"Courier New", 24 ) ) );
my program worked as expected and I am able to use non-copyable
objects in a container.