umm, I want to allocate number on the heap as it represent large object and I can have many of them on the list (also I move the list out of the scope)
so contains doesn't support pointers ? even if the object implements == ?
thanx
umm, I want to allocate number on the heap as it represent large object and I can have many of them on the list (also I move the list out of the scope)
so contains doesn't support pointers ? even if the object implements == ?
thanx
Last edited by Rockem; 12th August 2009 at 16:52.
* QList will allocate memory on the heap internally... are you sure you want to do that yourself?
* (the list going out of scope is another matter)
* how big (in bytes) do you expect those number to be? how many do you want to store?
* if you put a pointer inside QList, you will be responsible to delete the entries (QList will not delete them in its constructor); also comparison is done on the pointer, not the object pointed to. (maybe Boost.ptr_container can help you, if you insist on the pointer in list thing. An alternative might be to wrap the allocated object in "smart pointers" like boost::shared_ptr
HTH
what do you mean by "QList will allocate memory on the heap internally." ?
I mean if I do :
Number n(2);
list.append(n);
return list;
n will be deleted right ?
otherwise who will delete it
n will be deleted but its copy that is in the list will get copied again and returned as part of the list. That's why you need to implement the copy constructor for your class. And if you make Number an implicitly shared class, only the facade part of the object will be allocated on the stack and the real data will reside on heap and will not be copied whenever the object itself is copied.
how do I make a class to be implicitly shared class ?
thanx
Open Qt Assistant and type in "Implicitly Shared Classes" in the index tab. Then type in "QSharedDataPointer".
It doesn't matter, it will work fine without pointers. Just make sure you implement the copy constructor and assign operator (unless the ones provided by the compiler are fine) and think about making your Number an implicitly shared class (see QSharedData).
No, because the list contains pointers so it also compares pointers.so contains doesn't support pointers ? even if the object implements == ?
Bookmarks