私は現在、後で実装される抽象的なインターフェイスを持つC++プロジェクトに取り組んでいます。また、実装には実装されていないメソッドも実装されています。 私の問題は、私の実装を使用すると、コンパイラ(MSVC)はインターフェイスメソッドを見ないということです。これを引き起こす原因は何ですか?どうすれば解決できますか?実装に仮想メソッドがありません
ここにコードがあります。
#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);
}
私はそれを見ているし、私のエディタにコードを貼り付けましたが、私は半分に固定した後、私はそれをあきらめましたダースのエラーとそれはまだコンパイルされませんでした。あなたが求めている問題が1つしかないコードを提供することはとても難しいですか?それは、私が何十というエラーのどれをあなたが不平を言うのか見ることができません。コードを修正してください。 – sbi
申し訳ありません、悪いコードです。私は今、エラーを修正して、今私の問題が存在します。 –