4

私は C++ でスタンフォード コースの cs106b を行っていますが、行き詰まっていて、正しく理解できないようです。これは、この種のことを知っている人にとってはおそらく非常に簡単な修正です。main.cpp と randword.h と randword.cpp の 3 つのファイルがあります。randword.h には、GetLine() が定義されているスタンフォード ライブラリである #include "simpio.h" があります。main.cpp ファイルで GetLine() を動作させることができますが、コンパイルしようとすると、randword.cpp で「'GetLine()' への未定義の参照」が発生します。

コードブロックを使用し、「ファイルを追加...」機能を使用しました。

main.cpp のコードは次のとおりです。

  #include "randword.h"

  /* Private function prototypes */

  /* Main program */
  randword rw;
  int main() {
  rw.initDictionary();


}

ランダムワード.h:

   #ifndef RANDWORD_H_INCLUDED
   #define RANDWORD_H_INCLUDED

   #include <iostream>
   #include <fstream>
   #include <stdio.h>

   #include "simpio.h"
   #include "strutils.h"


   using namespace std;

   class randword{
       public:
       void initDictionary();
       string chooseRandomWord();
       string strArray[];
       private:

   };


   #endif // RANDWORD_H_INCLUDED

ランダム.cpp:

   #include "randword.h"

   using namespace std;

   void randword::initDictionary(){
       string fileName;
       ifstream infile;
       fileName = GetLine();
       infile.open(fileName.c_str());
       if(infile.fail()) cout << "Couldn't read file.";
       return;
   }

   string randword::chooseRandomWord(){
   string st1;
   return st1;

   }

どんな助けでも大歓迎です!この質問は既に投稿されていると思われますが、見つかりませんでした。ありがとう!

4

1 に答える 1

0

コードブロックを使用してライブラリを手動で追加してみてください

  • プロジェクトを開く
  • プロジェクトを右クリックし、ビルド オプションを選択します。
  • デバッガを選択
  • リンカー設定に移動
  • [リンク ライブラリ] の下で [追加] をクリックします。
  • libファイルを見つけて選択し、相対パスとして保持します
  • ここで返信しない場合は、プロジェクトを実行する必要があります(私が何か間違ったことを説明したように)

randword.cpp には、使用GetLineに必要なライブラリ ファイルがありません。ヘッダー ファイル内に含めた可能性がありますが、これは randword.cpp には引き継がれません。ライブラリ ファイルの機能にアクセスするには、他のファイルと同じようにライブラリ ファイルを含める必要があります。

//randword.cpp
#include <iostream>
#include "simpio.h" //include again!!!

//code here....
于 2012-12-18T20:26:07.290 に答える