c ++:从另一个文件中的函数返回结构“未定义引用”

时间:2015-12-31 03:59:00

标签: c++ struct reference

所以,基本上我试图创建这个计算棱镜体积的非常基本的程序。这仅用于学习目的,所以我正在尝试一些不必要的高级“演习”。

这个想法是在“vol.cpp”文件中的“vol”类中调用一个函数“dims()”,它从'cin>>'中收集尺寸。并将它们放在一个结构中,该结构在头文件“vol.h”中声明。然后返回此结构。 然后使用struct的元素作为参数调用“vol”中称为“volume”的另一个函数,然后计算卷并返回值。

我做了很多研究和调试。我犯了这么多错误,但我不能动摇这个(我希望)一个。

我一直收到这个错误:

  

未定义对`vol :: dims()'

的引用

在main.cpp priv_dims = oneObject.dims();

的第10行

请帮忙。

main.cpp代码是:

#include <iostream>
#include "vol.h"

using namespace std;

int main()
{
    vol oneObject;
    vol::dimensions priv_dims;
    priv_dims = oneObject.dims();

    double calcVolume = oneObject.volume(priv_dims.height, priv_dims.width, priv_dims.length);
    cout << calcVolume;

    return 0;
}

vol.h代码是:

#ifndef VOL_H
#define VOL_H

class vol
{
    public:
        struct dimensions
        {
            double length, height, width;
        };
        vol();
        double volume(double h=5, double w=5, double l=5 );
        dimensions dims();

    private:
};

#endif // VOL_H

vol.cpp代码是:

#include <iostream>
#include "vol.h"

vol::vol()
{
    //ctor
}

double vol::volume(double h, double w, double l)
{
    return h*w*l;
}

vol::dimensions dims()
{
    vol::dimensions dims_priv;

    std::cout << "Please enter length: ";
    std::cin >> dims_priv.length;
    std::cout << "Please enter width: ";
    std::cin >> dims_priv.width;
    std::cout << "Please enter height: ";
    std::cin >> dims_priv.height;

    return dims_priv;

}

我真的希望你能帮助我,因为这个功能可能对我来说非常有用。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

在vol.cpp中,这一行:

vol::dimensions dims()

应该是:

vol::dimensions vol::dims()

答案 1 :(得分:0)

您没有正确定义成员函数,而是将其定义为非成员函数。

变化

double Fx = G * mass * b.mass / Math.pow( Math.sqrt(Math.pow(2,xPos-b.xPos) + Math.pow(2,yPos-b.yPos)), 2);

vol::dimensions dims()