I build my application and build my dictionary by using linkdef.h file that contain few lines like:
#pragma link C++ class MyClass+;
but when I removed ‘+’ mark during generating dictionary I get errors like:
pointer to pointer (need manual intervention) or no size indication!
In past topics I found that this is caused due to fact that cint don’t recognize size of arrays that are connected with those pointers, but I don’t know why add ‘+’ automatically remove this error. Could anybody explain the difference between:
#pragma link C++ class MyClass+; and #pragma link C++ class MyClass;
See the User’s guide for more details. Without the +, rootcint generate a Streamer function details each I/O operation (using explicitly operator>> and TBuffer operations). This had many deficiency and problems (in particular for arrays and collection). With the +, rootcint generates a Streamer function using the new I/O mechanism which is dictionary based (and the Streamer function is very small). This new I/O mechanism is much efficient, is being actively developed and support many additional class layout. In addition only the new I/O mechanism support automatic schema evolution (with the +, you must take care of any schema evolution yourself).