Ho riprodotto con un semplice codice sotto qualcosa che mi manca.
La classe B possiede la classe A come membro e utilizza lo stesso nome tipografico.
Desidero evitare la replica di questi modelli in modo che nel main() possa chiamare qualcosa come B b (a, 3.0) che riutilizzerebbe il modello da A. È possibile?Riutilizzare i parametri del modello attraverso diverse classi
#include <iostream>
#include <vector>
template<int N, typename T=double>
struct A
{
A(T val) : vecA(N, val) {}
void print() { for (auto i : vecA) std::cout << i << ";"; }
std::vector<T> vecA;
};
template<int N, typename T>
struct B
{
B(const A<N,T> & in, T scal) : a(in), scalB(scal) {}
void print() { a.print(); std::cout << " | " << scalB << std::endl; }
A<N,T> a;
T scalB;
};
int main()
{
A<5,float> a(2.0);
B<5,float> b(a, 3.0); // This is redundancy. Can I do something like B b(a,3.0) ?
b.print();
}
Se siete curiosi sul perché non è consentito: http://stackoverflow.com/questions/984394/why-not -infer-template-parameter-from-constructor – DarioP