0

良いインターフェースを作成して使用するのに問題があります...私のセットアップの概要:

「インターフェース」GraphicsLibrary.H ..。

virtual void drawPoint(const Point& p, unsigned char r, unsigned char g, unsigned char b, double pointSize);

「空の」GraphicsLibrary.ccpで!そのインターフェイスなので、「OpenGL」はグラフィックライブラリです...だから私はOpenGL.CPPを持っています:

void GraphicsLibrary::drawPoint(const Point& p, unsigned char r, unsigned char g, unsigned char b, double pointSize)
{
    //some code
}

もちろん、これには「空の」OpenGL.hがあります(彼のヘッダーファイルはGraphicsLibrary.hであるため)

次に、OpenGLを使用し、それらの基本描画関数を使用する、より具体的な関数を持つクラスがあります...(OpenGLVis_Enviroment.cpp):

OpenGL ogl;
void drawObstacleUnderConstruction(Obstacle::Type type, const vector<Point>& points)
{
for( //etcetc )
        ogl.drawPoint(*it, 255, 255, 255, 3.0);
}

しかし、私はいくつかのOpenGL関数を使用するメインも持っています...したがって、メインには次のものもあります:

OpenGL openGL;
openGL.drawText(something);

しかし今、私はそれらのエラーをたくさん持っています(私は他のすべての関数と同じです):

1>OpenGLVis_Environment.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall GraphicsLibrary::drawPoint(struct Point const &,unsigned char,unsigned char,unsigned char,double)" (?drawPoint@GraphicsLibrary@@UAEXABUPoint@@EEEN@Z) referenced in function "void __cdecl DrawingFunctions::drawObstacleUnderConstruction(enum Obstacle::Type,class std::vector<struct Point,class std::allocator<struct Point> > const &)" (?drawObstacleUnderConstruction@DrawingFunctions@@YAXW4Type@Obstacle@@ABV?$vector@UPoint@@V?$allocator@UPoint@@@std@@@std@@@Z)

これは、「GraphicsLibrary :: drawPoint ...」を使用しているためですか?私はオンラインで何年も検索していますが、インターフェースに関する多くの例を見つけるのは難しいです..そしてそれらをどのように扱うか...事前にみんなに感謝します

4

1 に答える 1

1

リンカーは文句を言い、あなたは無料の関数であるDrawingFunctions::drawObstacleUnderConstructionを定義しました。void drawObstacleUnderConstruction

関数を定義するときに名前を修飾します。

void DrawingFunctions::drawObstacleUnderConstruction(Obstacle::Type type, const vector<Point>& points)
{
    for( //etcetc )
        ogl.drawPoint(*it, 255, 255, 255, 3.0);
}
于 2013-03-05T15:00:09.540 に答える