代码之家  ›  专栏  ›  技术社区  ›  FloppyDisk

C++接口编译

  •  0
  • FloppyDisk  · 技术社区  · 15 年前

    编辑:

    我想出了解决办法。我没有在编译指令中添加-combine,这会产生错误。


    Undefined symbols:
      "GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
          _main in ccohy7fS.o
          _main in ccohy7fS.o
      "GradeBook::getCourseName()", referenced from:
          _main in ccohy7fS.o
          _main in ccohy7fS.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status<
    

    如果有人能给我指出正确的方向,我将不胜感激。

    我的头文件:

    
    //Gradebook 6 Header
    //Purpose is to be the class declaration for the class Gradebook 6
    //Declare public, privates, and function names. 
    
    #include  //the standard c++ string class library
    using std::string;
    
    //define the class gradebook
    class GradeBook
    {
        public:  //all the public functions in the class
    
         GradeBook(string ); //constructor expects string input
         void setCourseName (string ); //method sets course name--needs string input
         string getCourseName(); //function returns a string value
         void displayMessage();  //to console
    
        private: //all private members of the class
            string courseName; 
    }; //ends the class declaration 

    
    //Gradebook 6
    // The actual implementation of the class delcaration in gradebook6.h
    
    #include 
    using std::cout;
    using std::endl;
    
    #include "gradebook6.h" //include the class definition
    
    //define the class gradebook
    
    GradeBook::GradeBook(string name) //constructor expects string input
    {
        setCourseName(name); //call the set method and pass the input from the constructor. 
    }
    
    void GradeBook::setCourseName (string name) //method sets course name--needs string input
    {
        courseName = name; //sets the private variable courseName to the value passed by name
    }
    
    string GradeBook::getCourseName() //function returns a string value
    {
        return courseName;
    }
    
    void GradeBook::displayMessage()  //function does not return anything but displays //message to console
    {
       cout //message here, the pre tag isn't letting it display
    } //end function displayMessage
    

    最后,我编写了一个测试文件来实现接口并对其进行测试。

    
    // Gradebook6 Test
    // Program's purpose is to test our GradeBook5 header file and file seperated classes
    
    #include 
    using std::cout;
    using std::endl;
    
    #include "gradebook6.h" //including our gradebook header from the local file.
    
    //being program
    int main()
    {
        //create two gradebook objects 
        GradeBook myGradeBook1 ("CSC 101 Intro to C++ Programming"); //create a default object using the default constructor
        GradeBook myGradeBook2 ("CSC 102 Data Structures in C++");
    
        //display intitial course name
        cout //another output message here that the code tag does not like
    
        return 0;
    }
    2 回复  |  直到 15 年前
        1
  •  1
  •   Skrymsli    15 年前

    看起来您只需要在GradeBook.cpp对象文件中链接到最终可执行文件。你想发布你的makefile或者你构建它的方式吗?

        2
  •  1
  •   Alex Martelli    15 年前