私はインターフェースを持っていますが、メソッドは静的でなければならないのでそれを使用できません..または別の解決策...私が見る限り、それらは静的ではありません...:
使用する関数の定義を持つグラフィックライブラリ:
GraphicsLibrary.h
virtual void drawText(const std::string& text, const Point& pt, unsigned char r, unsigned char g, unsigned char b);
明確にするために、GraphicsLibraryから派生したOpenGLは次のとおりです。
OpenGL.h
class OpenGL : public GraphicsLibrary
OpenGL.cppは、GraphicsLibraryの仮想関数を使用し、角かっこで囲んで「実行」します。
OpenGL.cpp
void GraphicsLibrary::drawText(const std::string& text, const Point &pt, unsigned char r, unsigned char g, unsigned char b)
{
//does things
}
それから私のメインで私はメソッドを使用します...しかしそれはエラーを出します
MyMain
OpenGL::drawText(toString(mousePos_world), drawPosition, 255, 0, 0);
エラー:非静的メンバー参照は特定のオブジェクトに関連している必要があります
この問題をどのように修正する必要がありますか?関数を静的にする必要があると読みましたが、できないと思いました...そうですか?または、ほとんどの人は、他のクラスのメソッドを使用しているのに、なぜこのようにクラスを構築したのか考えてみてください。しかし、それは私がインターフェースを持っているからです...!