See the C++ FAQ: http://www.parashift.com/c++-faq-lite/templates.html#faq-35.13
Davor
On 2011-06-27, at 8:49 AM, Ian Fellows wrote:
> Hi,
>
> I have am having trouble using template classes in rcpp. The compiling
> process works just fine, but there are errors on link. It seems as if the
> methods are not getting specialized.
>
> The Error:
> ** testing if installed package can be loaded
> Error in dyn.load(file, DLLpath = DLLpath, ...) :
> unable to load shared object
> '/Library/Frameworks/R.framework/Versions/2.13/Resources/library/gergm/libs/x86_64/gergm.so':
>
> dlopen(/Library/Frameworks/R.framework/Versions/2.13/Resources/library/gergm/libs/x86_64/gergm.so,
> 6): Symbol not found: __ZN5gergm9BinaryNetINS_14DirectedVertexEE4sizeEv
> Referenced from:
> /Library/Frameworks/R.framework/Versions/2.13/Resources/library/gergm/libs/x86_64/gergm.so
> Expected in: flat namespace
> in
> /Library/Frameworks/R.framework/Versions/2.13/Resources/library/gergm/libs/x86_64/gergm.so
> Error: loading failed
> Execution halted
> ERROR: loading failed
>
>
> The basic form of the class is:
>
> template<class T>
> class BinaryNet{
> public:
> int size();
> };
>
> template<class T>
> void BinaryNet<T>::size(){return 1;}
>
> BinaryNet is called in a function in a separate c++ file. If I explicitly add
> the specialization, then everything works out fine
>
> template<>
> void BinaryNet<DirectedVertex>::size(){return 1;}
>
> How can I make sure that these specializations are created. I apologize if
> this is more a c++ question than an Rcpp one.
>
>
> Best,
> Ian
>
>
> _______________________________________________
> Rcpp-devel mailing list
> [email protected]
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel