dzięki za pomoc. niestety mam teraz inny problem, nie potrafię przekazać tego wskaźnika do innej funkcji. chyba cos przekombinowałem (jak zwykle zresztą).
wiem, że ten przykładowy kod nie będzie działał poprawnie, ale powinien się chociaż skompilować.
#include <vector>
class A {
std::vector<int (*)()> we;
std::vector<double> w;
public:
int funkcjaZwracajacaInt() {
double sum =0;
for(unsigned int i=0; i < we.size(); ++i){
sum += we[i]() * w[i];
}
return sum;
}
void dodaj(const double& a, int (*wsk)()){
we.push_back(wsk);
w.push_back(a);
}
};
class B {
std::vector<A> ne;
public:
B(unsigned int a){
ne.resize(a);
}
unsigned int ilosc() {
return ne.size();
}
void polaczZ(B& l) {
for(unsigned int i=0; i< ne.size(); ++i){
for(unsigned int j =0; j < l.ilosc(); ++j){
// blad
ne[i].dodaj( 5.4, l.ne[j].funkcjaZwracajacaInt);
}
}
}
};
int main (int argc, char **argv) {
B warstwa1(3);
B warstwa2(3);
warstwa2.polaczZ(warstwa1);
return 0;
}
podczas kompilacji dostaję:
bla.cpp: In member function ‘void B::polaczZ(B&)’:
bla.cpp:34: error: no matching function for call to ‘A::dodaj(double, <unresolved overloaded function type>)’
bla.cpp:15: note: candidates are: void A::dodaj(const double&, int (*)())
może wyjaśnię o co mi chodzi, bo pewnie da się to lepiej rozwiązać. próbuję zrobić prostą sieć neuronową. polacznie pomiędzy warstwami wykombinowałem jak widać. funkcja "funkcjaZwracajacaInt" ma wywoływać siebie dla kazdego neuronu (ne) z warstwy polaczonej.