NeuralNetwork::NeuralNetwork(NeuralNetwork* n)
{
   m_numInputNeurons = n->m_numInputNeurons;
   m_numHiddenNeurons = n->m_numHiddenNeurons;   
   m_numOutputNeurons = n->m_numOutputNeurons;

   m_numHiddenLayers = n->m_numHiddenLayers;

   CreateNeurons();
   ConnectNeurons();

   for(int layer = 0; layer < m_numHiddenLayers; layer++)
   {
      for(int row = 0; row < Network[layer].size(); row++)
      {
         Neuron* neuronToModify = GetNeuron(layer, row);
         Neuron* neuronToCopy   = n->GetNeuron(layer, row);
         neuronToModify->SetOutputWeights(neuronToCopy->GetOutputWeights());
      }
   }
}