我尝试使用结构从函数输出两个值,然后在main中使用。我正在使用头文件来调用要使用的函数。代码正在编译,但我得到的值不正确。我不知道我是否在我的.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;
}
我的主要包含.h文件,并使用:
调用.cpp文件 struct wave_parameters wave;
kn = wave.kn;
这是输出多个变量然后使用头文件的正确方法吗?正如你所看到的,我已经两次声明我的结构(一次在我的.h中,一次在我的.cpp文件中),但我这样做是因为我得到了错误。任何帮助真的很感激!
答案 0 :(得分:3)
肯定只在结构中声明一次结构,理想情况是在标题中。 然后,CPP应包含标题,以便访问该类型。
使用该类型时,不需要编写“struct wave_parameters wave”,你就不需要把int“struct”。
主要看起来像是:
#include "LinearDispersionSolver.h"
int main(int argc, char** argv)
{
wave_parameters wave;
wave = linearDisperssion();
double kn = wave.kn;
}
否则 - 代码看起来还不错。
答案 1 :(得分:1)
你没有证明你在你的.cpp中包含你的.h - 你不需要两次声明结构,所以我建议你先修复它。包括.h并删除.cpp中的声明。
标题中的函数应该具有extern修饰符。
然后在你的主要内容中,我看不出这段代码是如何工作的
struct wave_parameters wave;
kn = wave.kn;
您似乎在声明一个未初始化的结构,然后访问其中一个值。我期待看到对linear_dispersion函数的调用。