C++:从另一个文件"undefined reference to"中的类中的函数返回结构

c++: return struct from function in class in another file "undefined reference to"

本文关键字:函数 结构 返回 to reference 另一个 文件 undefined C++      更新时间:2023-10-16

所以,本质上,我试图创建一个非常基本的程序来计算棱镜的体积。这只是为了学习,所以我正在尝试一些不必要的高级"演习"。

这个想法是在文件"vol.cpp"中的类"vol"中调用一个函数"dims()",该函数从"cin>>"中收集维度,并将它们放入一个结构中,该结构在头文件"vol.h"中声明。然后返回该结构。然后调用"vol"中另一个名为"volume"的函数,将结构的元素作为参数,然后计算体积并返回值。

我做了很多研究和调试。我犯了很多错误,但我无法摆脱最后一个(我希望)错误。

我一直收到这个错误:

未定义对`vol::dims()'的引用

在main.cpp priv_dims = oneObject.dims(); 中的第10行

请帮忙。

主.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;
}

第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;
}

我真的希望你能帮助我,因为钉这个功能可能会对我很有用

提前谢谢。

在vol.cpp中,此行:

vol::dimensions dims()

应该是:

vol::dimensions vol::dims()

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

更改

vol::dimensions dims()

vol::dimensions vol::dims()
//              ~~~~~