我正在尝试使用此页面来学习人工神经网络(它在“处理中”,但我在更改一些次要部分时将其转换为C ++):http://natureofcode.com/book/chapter-10-neural-networks/但是当我在下面运行代码时出现此错误:
main.cpp: In function ‘int main()’:
main.cpp:36:7: error: request for member ‘feedforward’ in ‘idk’, which is of non-class type ‘Perceptron()’
idk->feedforward({1.0, .5});
我环顾四周,但我认为我找不到能在调用方法时遇到此错误的人。
码:
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <vector>
const double e = 2.71828182845904523536;
float S(float in){
return 1 / (1 + pow(e, -(in)));
}
double fRand(double fMin, double fMax){
double f = (double)rand() / RAND_MAX;
return fMin + f * (fMax - fMin);
}
struct Perceptron{
Perceptron(int n);
std::vector<double> weights;
int feedforward(float inputs[]);
};
Perceptron::Perceptron (int n){
weights.assign(n, fRand(-1.0, 1.0));
}
int Perceptron::feedforward(float inputs[]){
return 0; // I have this just for testing that I can call it
}
int main(){
srand(time(NULL));
Perceptron idk();
idk.feedforward({1.0, .5});
return 0;
}
最佳答案
Perceptron idk();
是函数的声明,而不是对象。可以将构造函数参数传递给idk
或创建不带参数的默认构造函数。从代码中看来,您打算使用具有默认ctor的Perceptron
,因此您可能应该从()
声明中删除idk
,使其成为对象而不是函数的声明,并删除int n
来自Perceptron
构造函数。