在c++头文件中声明结构体
Declaring struct in header C++
我试图使用结构体从函数输出两个值,然后在主程序中使用。我使用头文件来调用要使用的函数。代码正在编译,但我得到的值是不正确的。我不知道我是否在我的。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的一部分(不是main)看起来像:
#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文件),但我这样做,因为我得到错误,否则。任何帮助都是非常感激的!
绝对只声明一次结构体,最好是在头文件中。然后,CPP应该包含头文件,以便访问该类型。
使用该类型时,不需要写"struct wave_parameters wave",也不需要输入"struct"。
main看起来像:
#include "LinearDispersionSolver.h"
int main(int argc, char** argv)
{
wave_parameters wave;
wave = linearDisperssion();
double kn = wave.kn;
}
您没有显示您在您的。cpp中包含了您的。h -您不应该需要声明该结构两次,所以我建议从解决这个问题开始。包括。h并删除。cpp中的声明。
头文件中的函数应该有外部修饰符。
然后在你的主程序中,我不知道这段代码是如何工作的
struct wave_parameters wave;
kn = wave.kn;
你似乎声明了一个未初始化的结构,然后访问了它的一个值。
相关文章:
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 包含 std::list 的结构体的 C++ 初始化
- 当我想为结构体声明新成员时,有些麻烦我不明白
- 如何声明在不同命名空间中定义的结构体
- 在c++头文件中声明结构体
- 在for循环初始化语句中声明未命名结构体
- 如何声明具有other类型成员的两个结构体
- 如何声明结构体?
- 结构体上未加声明的标识符
- c++中声明结构体的问题
- 为什么在链表中声明指向同一结构体的指针?
- 在结构体声明中,空大括号是什么意思?
- 内联结构体声明的Sizeof
- 如何在动态二维数组中存储数据,在结构体中声明,该结构体也被c++中的另一个结构体使用
- 了解隐式声明的默认协结构体
- 为什么编译器不能像变量声明那样在结构体成员中设置 char[] = { .. } 的大小?
- 如何在特定地址声明结构体
- 引用模板类中声明的结构体