4

我正在学习 C++ 中的斯坦福课程 cs106b,但我被卡住了,我似乎无法正确理解。对于知道这类东西的人来说,这可能是一个非常容易解决的问题。我有三个文件,一个 main.cpp 和一个 randword.h 和 randword.cpp。在 randword.h 我有 #include "simpio.h" 这是一个定义 GetLine() 的斯坦福图书馆。我可以让 GetLine() 在 main.cpp 文件中工作,但是当我尝试编译时,我在 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 回答