[英]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(不是主要文件)的一部分看起來像:
#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文件中一次聲明),但是我這樣做是因為否則會出錯。 任何幫助都非常感謝!
絕對只一次聲明該結構,最好在標頭中聲明一次。 然后,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;
}
否則-代碼看起來還可以。
您不會顯示自己將.h包含在.cpp中-您不需要兩次聲明該結構,因此我建議先將其修復。 包括.h並刪除.cpp中的聲明。
標頭中的函數實際上應該具有extern修飾符。
然后在您的主體中,我看不到此代碼如何工作
struct wave_parameters wave;
kn = wave.kn;
您似乎正在聲明一個未初始化的結構,然后訪問其值之一。 我期待看到對linear_dispersion函數的調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.