Bonjour,
j'ai actuellement une question assez bête, mais je suis pas assez rodé sur le langage pour trouver moi même la réponse...
J'ai une certaine classe, mettons NeuronFactory, qui me retourne des Neuron*.
Now, j'aimerais tester une certaine propriété (la propriété value bien mise à 10 de mon neurone de type Neuron*), mais qui est protégée.
Du coup, j'ai qqch dans le genre :
Mon idée, c'est que lorsqu'on accède depuis une classe à un objet de la même classe, alors les valeurs sont "publiques", typiquement NeuronTest(NeuronTest b) permet d'accéder aux propriétés de b. Mais ici, NeuronTest bien que fille de Neuron ne permet pas d'accéder aux propriétés de Neuron. Même en précisant le using Neuron::value;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 class NeuronFactory{ Neuron *getNeuron(int value){return new Neuron(value);} }; class Neuron{ public: Neuron(int a):value(a){} protected: int value; }; class NeuronTest:public Neuron{ //using Neuron::value; n'y change rien NeuronTest(Neuron* n):Neuron(n->value){} //Erreur ici, value is protected int getValue(){return value;} }; void test(){ //un test qui vérifie que la value est bien settée par le neurone NeuronFactory n; Neuron* neuron = n->getNeuron(10); NeuronTest* neuronTest = new NeuronTest(neuron); Tester.is(neuronTest->getValue(), 10); }
Avez vous une idée?
Partager