gpt4 book ai didi

c++ - 在 header C++ 中声明结构

转载 作者:搜寻专家 更新时间:2023-10-31 00:34:54 24 4
gpt4 key购买 nike

我正在尝试使用结构从函数输出两个值,然后在主函数中使用。我正在使用头文件来调用要使用的函数。代码正在编译,但我得到的值不正确。我不知道我是否在我的 .h 文件中声明了正确的结构,或者某些地方使用不正确。目前,我的 .h 文件如下所示:

#ifndef LINEAR_DISPERSION_SOLVER_H
#define LINEAR_DISPERSION_SOLVER_H

//Function for dispersion relation equation
double f (double L, double T, double g, double d);

//Function for derivative of linear dispersion relation
double df(double L, double T, double g, double d);

//Wave parameter struct definition

struct wave_parameters {
double kn;
double w;
};

//Linear Dispersion Solver function
wave_parameters linear_dispersion();

#endif

我的 .cpp 的一部分(不是主要的)看起来像:

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <iomanip>

using namespace std;

struct wave_parameters {
double kn;
double w;
};
float pi = 3.1415927;

double f(double L, double T, double g, double d) {
return (g*g);
}

double df(double L, double T, double g, double d) {
return (1 + ((g*T*T*d)/(L*L))
}


struct wave_parameters linear_dispersion () {

.... Deleted code .....

int choice;


cout << "Enter the depth of water ---> ";
cin >> d;

cout << "Enter 1 to solve for wave number or 2 to solve for frequency --> ";
cin >> choice;

//Calling the wave struct to fill with values

struct wave_parameters wave;

if (choice == 1) {
cout << "Enter the value for period ---> ";
cin >> T;

.... Deleted code ....

wave.kn = k;
wave.w = omega;

return wave;
}

然后我的 main 包含 .h 文件并调用 .cpp 文件使用:

 struct wave_parameters wave;
kn = wave.kn;

这是输出多个变量然后使用头文件的正确方法吗?如您所见,我已经声明了我的结构两次(一次在我的 .h 文件中,一次在我的 .cpp 文件中),但我这样做是因为我在其他方面遇到了错误。非常感谢任何帮助!

最佳答案

绝对只声明结构一次,最好是在 header 中。然后,CPP 应包含 header 以便访问该类型。

使用类型时,不用写“struct wave_parameters wave”,不用写int“struct”。

main 看起来像吗:

#include "LinearDispersionSolver.h"
int main(int argc, char** argv)
{
wave_parameters wave;
wave = linearDisperssion();
double kn = wave.kn;
}

否则 - 代码看起来还不错。

关于c++ - 在 header C++ 中声明结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com