3

重複の可能性:
未定義の参照/未解決の外部シンボルエラーとは何ですか?それを修正するにはどうすればよいですか?

私はこの問題が常に答えられることを知っていますが、私の特定の例の解決策を見つけることができませんでした。完全なエラーは次のとおりです。

g++ main.cpp
Undefined symbols for architecture x86_64:
  "Board::display()", referenced from:
  _main in cc7hPZpy.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

Boardクラスからこの表示関数をプルしようとしています。主なものは次のとおりです。

 #include "Board.h"
 #include <iostream>
 #include <string>

 using namespace std;

 int main()
 {
    cout << "Some Asian Game" << endl;
    Board base;
    base.display();
            //this is creating the error
            //commenting it out compiles, but obviously does not do what i want. 


    return 0;
 }

およびBoard.h:

#ifndef Board_H
#define Board_H

#include "Row.h"
#include <vector>
using namespace std;

class Board
{
public:
   vector<Row> rows;

   Board()
   {
        vector<Row> (15);
   }

   void play(int row, int col, char clr);
   bool checkWin(int row, int col, char clr);
   char getCellColor(int row, int col);
   void display();

   void empty();
};

#endif

およびboard.cppからの問題の特定の関数

void Board::display()
{
    for(int i=0;i<16;i++)
    {
         for(int i2=0;i2<16;i2++)
         {
           cout << rows[i].cells[i2].getState();
         }
    }
}

私はこのサイトを頻繁に参照して回答を求めてきましたが、個人的に使用したことは一度もないので、回答するのは我慢してください。私はかなり前向きですが、これは私が見落としている単純なものです。

4

1 に答える 1

2

そのはず

g++ main.cpp board.cpp

コンパイルしていないboard.cppため、シンボルはエクスポートされません。

また:

Board()
{
    vector<Row> (15);
}

間違っている。それは一時的なものを作成するだけです、あなたはおそらく意味します:

Board() : rows(16)
{
}
于 2012-10-10T22:05:02.330 に答える