Ошибка при компиляции класса: нет подходящего конструктора по умолчанию
Есть данный код:
class Neuron // Neuron of the NNW
{
private:
std::vector<double> Wheights; // Wheights of Inputs
double Output = 0;
double delta = 0;
public:
Neuron(int InputCount)
{
Wheights.resize(InputCount); // Set the size of vector
for (std::vector<double>::iterator n = Wheights.begin(); n != Wheights.end(); ++n)
*n = rand() / (RAND_MAX / 2.0) - 1.0; // Changes all values to random number (from 1.0 to -1.0)
}
void FeedFoward(std::vector<double> Inputs)
{
double sum = 0;
for (int i = 0; i < (int)Wheights.size(); i++)
sum += Wheights.at(i) * Inputs.at(i);
Output = 1 / (1 + exp(-sum));
}
};
class Lier // Lier of the NNW
{
private:
std::vector<Neuron> Neurons; // Massiv with Neurons in Lier
public:
Lier(int NeuronCount, int InputCount = 0)
{
Neurons.resize(NeuronCount); // Set the size of vector
for (std::vector<Neuron>::iterator n = Neurons.begin(); n != Neurons.end(); ++n)
*n = Neuron(InputCount); // Fill the vector with neurons
}
};
При попытке сделать сборку пишет что:
Объясните что не так, такая ошибка вылезает часто, решаю обычно просто заново переписав код но что здесь не так понять не могу.
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Например, в
Neurons.resize(NeuronCount);
вы хотите изменить размер вектора. Чем он должен быть заполнен? Элементами Neuron по умолчанию, "пустыми", так сказать. Но у вас можно создавать Neuron только от int:
Neuron(int InputCount)
Вот компилятор и сообщает вам, что он не в состоянии ничего сделать без конструктора по умолчанию...
Каким именно он должен быть - вам виднее...