[Developers] libraries of functions
John Sibert
johnrsibert at gmail.com
Mon Aug 11 16:26:53 PDT 2014
The message is caused because the compiler does not know anything about
class model_parameters, as would be the case if
#include<CAPAM_Growth.hpp> were included in the GLOBALS_SECTION of a tpl
file.
If I read your function correctly, there is no need for Richards(...) to
be a member of the model_parameters class. All of the required variables
are passed as arguments. So I would suggest simply making it a global
function.
dvariable Richards(const dvariable &age, const dvariable &Linf, const
dvariable &K, const dvariable &t0, const dvariable &p)
If you want to be a more restrictive (and perhaps a bit safer in case
there is some other function with the same protoype), you might consider
using a namespace. For instance
namespace CAPAM
{
dvariable Richards(const dvariable &age, const dvariable &Linf,
const dvariable &K, const dvariable &t0, const dvariable &p)
{
}
}
To invoke it your could call
dvariable y = CAPAM::Richards(...)
Or insert a using statement in the GLOBALS_SECTION of your tpl like
using namesapce CAPAM;
and simply call the function without the namespace qualifier.
dvariable y = Richards(...)
The innertube has information on the use of namespace.
http://www.cplusplus.com/doc/tutorial/namespaces/
On 08/11/2014 12:49 PM, Mark Maunder wrote:
>
> Why do I get an error if I put the following function in the file
> CAPAM_Growth.hpp and include it using #include<CAPAM_Growth.hpp> but
> if I put it in the tpl using the FUNCTION section I do not? The
> translator appears to just put it in the cpp with no changes
>
> dvariable model_parameters::Richards(const dvariable &age, const
> dvariable &Linf, const dvariable &K, const dvariable &t0, const
> dvariable &p)
>
> {
>
> {
>
> dvariable Length=Linf*pow((1+(1/p)*exp(-K*(age-t0))),-p);
>
> return(Length);
>
> }
>
> }
>
> The errors I get are
>
> In file included from igm.cpp:3:0:
>
> ./CAPAM_Growth.hpp:130:142: error: invalid use of incomplete type
> 'struct model_parameters'
>
> c:/ADMB/admb101-gcc452-win32\include/admodel.h:107:9: error: forward
> declaration of 'struct model_parameters'
>
> igm.cpp: In member function 'virtual void
> model_parameters::userfunction()':
>
> igm.cpp:127:46: error: no matching function for call to
> 'Richards(prevariable, named_dvariable&, named_dvariable&,
> param_init_number&, named_dvariable&)'
>
> igm.cpp:128:58: error: no matching function for call to
> 'Richards(prevariable&, named_dvariable&, named_dvariable&,
> param_init_number&, named_dvariable&)'
>
> igm.cpp:139:49: error: no matching function for call to
> 'Richards(double&, named_dvariable&, named_dvariable&,
> param_init_number&, named_dvariable&)'
>
> The selectivity special issue of the journal Fisheries Research is now
> published
>
> http://www.sciencedirect.com/science/journal/01657836/158/supp/C
>
> The Stock Synthesis special issue of the journal Fisheries Research
>
> http://www.sciencedirect.com/science/journal/01657836/142
>
> Mark Maunder
>
> Head of the Stock Assessment Program
>
> Inter-American Tropical Tuna Commission
>
> 8901 La Jolla Shores Dr.
>
> La Jolla, CA 92037-1508, USA
>
> Tel: (858) 546-7027
>
> Fax: (858) 546-7133
>
> mmaunder at iattc.org <mailto:mmaunder at iattc.org>
>
> http://www.fisheriesstockassessment.com/TikiWiki/tiki-index.php?page=Mark+Maunder
>
> Visit the Center for the Advancement of Population Assessment
> Methodology at
>
> http://www.capamresearch.org/
>
> Visit the AD Model Builder project at
>
> http://admb-project.org/
>
> See the following website for information on fisheries stock
> assessment http://www.fisheriesstockassessment.com/
>
> --
> You received this message because you are subscribed to the Google
> Groups "admb-users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to admb-users+unsubscribe at googlegroups.com
> <mailto:admb-users+unsubscribe at googlegroups.com>.
> To post to this group, send email to admb-users at googlegroups.com
> <mailto:admb-users at googlegroups.com>.
> Visit this group at http://groups.google.com/group/admb-users.
> For more options, visit https://groups.google.com/d/optout.
More information about the Developers
mailing list