Je travaille actuellement sur un projet C++ où j'ai une interface abstraite implémentée plus tard. L'interface possède également une méthode implémentée que ma mise en œuvre ne remplace pas. Mon problème est que lors de l'utilisation de mon implémentation, le compilateur (MSVC) ne voit pas la méthode d'interface. Quelles sont les causes, et comment puis-je le résoudre?méthode virtuelle non vue dans l'implémentation
Voici le code.
#include <string>
#include <vector>
using std::string;
class A
{
public:
string name;
};
class interface
{
public:
virtual int num_foo() = 0;
virtual A* foo(int) = 0;
virtual A* foo(string &name){
for (int i(0); i < num_foo(); i++)
if (foo(i)->name == name)
return foo(i);
return 0;
}
};
class implementation : public interface
{
public:
virtual int num_foo() { return m_foos.size(); }
virtual A* foo(int i) {
//check range
return &m_foos[i];
}
std::vector<A> m_foos;
};
int main(...)
{
implementation impl;
// impl is properly initialized here
string name("bar");
// here comes my problem, the MSVC compiler doesn't see foo(string &name)
// and gives an error
A *a = impl.foo(name);
}
J'ai collé votre code dans mon éditeur d'avoir un coup d'oeil, mais j'ai abandonné après je fixe un demi- douzaine d'erreurs et il n'a toujours pas compilé. Est-ce si difficile de fournir un code qui ne pose que le seul problème que vous posez? En l'état, je ne peux pas voir laquelle des dizaines d'erreurs dont vous vous plaignez. Fixe ton code. – sbi
désolé pour le mauvais code. J'ai maintenant corrigé les erreurs et maintenant mon problème est présent. –