Существует определение класса, подобное этому:
template <class Impl>
FullO3CPU<Impl>::FullO3CPU(DerivO3CPUParams *params)
class DerivO3CPU : public FullO3CPU<O3CPUImpl>
{
public:
DerivO3CPU(DerivO3CPUParams *p)
: FullO3CPU<O3CPUImpl>(p)
{ }
};
DerivO3CPU *
DerivO3CPUParams::create()
{
...
return new DerivO3CPU(this);
}
Что я изменил, так это добавление еще одного аргумента в FullO3CPU
template <class Impl>
FullO3CPU<Impl>::FullO3CPU(DerivO3CPUParams *params, My_param *mp)
class DerivO3CPU : public FullO3CPU<O3CPUImpl>
{
public:
DerivO3CPU(DerivO3CPUParams *p, My_param *mp)
: FullO3CPU<O3CPUImpl>(p, mp)
{ }
};
DerivO3CPU *
DerivO3CPUParams::create()
{
...
return new DerivO3CPU(this);
}
Однако я не знаю, что делать с
return new DerivO3CPU(this);
потому что я получаю эту ошибку:
error: no matching function for call to 'DerivO3CPU::DerivO3CPU(DerivO3CPUParams* const)'
note: candidates are:
note: DerivO3CPU::DerivO3CPU(DerivO3CPUParams*, My_param*)
note: candidate expects 2 arguments, 1 provided