Załóżmy, że mam klasę prawdopodobieństwa z metodą, która oblicza średnią tablicy. Ponieważ możliwe jest, że ta metoda zostanie przekazana w postaci tablicy zmiennych, podwójnych, int, itd., Założyłem, że byłoby właściwe, aby ta metoda była metodą szablonową.C++ Jak przekazać wiele parametrów?
Ale przechodząc przez tablicę, muszę zdefiniować typ tablicy i długość tablicy. Moje pytanie brzmi: jak skonfigurować szablon, aby akceptował dwa wejścia? Nawiązałem kontakt z internetem, ale miałem ograniczone szczęście, widząc dobry przykład.
- Czy można definiować szablony do akceptowania parametrów, które są typu int, float itp.?
I zostały zaksięgowane mojego kodu poniżej
Prawdopodobieństwo Header
#ifndef COFFEEDEVMATH_PROBABILITY_H
#define COFFEEDEVMATH_PROBABILITY_H
class Probability
{
public:
Probability(void);
template <typename T, int N>
void ExpectedValueDataSet(const std::array<T, N>& data)
{
T test = data[0]; // This is irrelevant, but simply a place holder example.
}
protected:
private:
};
#endif // COFFEEDEVMATH_PROBABILITY_H
główna
#include <iostream>
#include <Probability.h>
int main()
{
float hoor[] = {3, 3, 1, 1};
Probability prob;
prob.ExpectedValueDataSet(hoor, 4);
}
to cała klasa, która powinna być szablon, a nie tylko jedna metoda. –
Na początek, 'int' nie jest drugim parametrem szablonu' std :: array', więc nie można go wydedukować. Typ to "size_t". – LogicStuff
Dlaczego dokładnie? Czuję, że bardziej odpowiednie byłoby posiadanie jednego "obiektu prawdopodobieństwa", który może operować na różnego rodzaju danych, które na niego rzucasz. Czy to, co próbuję nie legalnie w C++? – Izzo