对Class :: Class()和Class :: function()的未定义引用

时间:2014-10-01 12:41:48

标签: c++ header-files undefined-reference

我正试图在C ++中第一次使用多个文件。这是我写的文件。

文件#1:Box.hpp

#ifndef BOX_HPP
#define BOX_HPP

class Box
{
    private:
        int length;
        int width;
        int height;

        Box() {}

    public:
        Box(int _length, int _width, int _height);

        void set_dimensions(int _length, int _width, int _height);
        int volume();
 };

 #endif

文件#2:Box.cpp

#include "Box.hpp"

Box::Box(int _length, int _width, int _height)
{
    set_dimensions(_length, _width, _height);
}

void Box::set_dimensions(int _length, int _width, int _height)
{
    length = _length;
    width = _width;
    height = _height;
}

int Box::volume()
{
    return length*width*height;
}

文件#3:main.cpp

#include "Box.hpp"
#include <iostream>

int main()
{
    Box box1 = Box(1,2,3);
    std::cout << box1.volume() << std::endl;
    return 0;
}

当我尝试运行main.cpp时,我收到以下错误:

  

对'Box :: Box(int,int,int)'

的未定义引用      

对'Box :: volume()'

的未定义引用

我无法弄清楚原因。

1 个答案:

答案 0 :(得分:1)

您需要使用以下两个文件进行编译:

$ g++ main.cpp Box.cpp  

我认为你正在编译:

$ g++ main.cpp