Dans le fichier test.cpp, j'ai ceci:héritage C++ Question
template <typename T>
class A
{
public:
A(int a){};
virtual ~A();
private:
};
class B : public A<int>
{
public:
B(int a):A(a){};
virtual ~B();
private:
};
int main()
{
return 0;
}
Quand je compile, je reçois ceci:
[email protected]:~/Documents/ECLibrary$ g++ -g -Wall -Wextra -pedantic-errors test.cpp -o tdriver
test.cpp: In constructor ‘B::B(int)’:
test.cpp:14: error: class ‘B’ does not have any field named ‘A’
test.cpp:14: error: no matching function for call to ‘A<int>::A()’
test.cpp:5: note: candidates are: A<T>::A(int) [with T = int]
test.cpp:3: note: A<int>::A(const A<int>&)
Je ne veux pas un constructeur par défaut pour ma base classe, car cela n'a pas de sens dans mon code. Je veux juste que ma classe dérivée exécute le constructeur appelé de la classe de base et fasse une construction supplémentaire pour les choses supplémentaires dans la classe dérivée. Je ne sais vraiment pas pourquoi il essaie d'appeler le constructeur par défaut de la classe de base lorsque j'essaie d'appeler explicitement un autre constructeur. Est-ce que j'ai râté quelque chose?
Merci
Avez-vous implémenté un constructeur de classe A? –
Vous avez sûrement vu à quoi ressemblerait le post puisque vous deviez faire défiler l'aperçu pour le soumettre. Lisez la FAQ d'édition et utilisez la barre d'outils d'édition pour éditer vos messages, pas seulement deviner. (Evident par '[code]' et autres joyeusetés.) Vous êtes en train de jouer toutes les corrections que les autres font, en ignorant complètement l'aperçu à chaque fois. Je veux presque -1 juste pour ça. Vous n'approchez pas toutes les tâches de cette façon? – GManNickG
Qu'est-ce que ce mot 'modèle' fait là? Quoi qu'il en soit, s'il vous plaît modifier comme suit: mettre le code sur des lignes séparées, sélectionnez ces lignes, et cliquez sur le bouton format-as-code (il a des zéros et des uns dessus). Cheers, –