[英]xxxx does not name a type C++
我是C / C ++的新手,正在嘗試提高編碼技能。 我正在編寫一個最小的代碼來計算在大學學習中使用的公式。 此代碼包含許多類。 當我嘗試構建它時,我在類標題中得到了錯誤提示。 這是我的代碼:
materials.hpp
#ifndef MATERIALS_HPP
#define MATERIALS_HPP
#include <cmath>
#include <iostream>
using namespace std;
class materials{
public:
double MassNumber, AtomNumber, Density, I, C, a, m, X1, X0, X, delta;
materials();
materials(double, double, double, double, double, double, double, double, double);
~materials();
};
materials Magnesium;
materials Cupper;
materials Alluminium;
materials Plumbo;
materials Water;
#endif // MATERIALS_HPP
這就是來源;
materials.cpp
#include "materials.hpp"
#include <cmath>
#include <iostream>
using namespace std;
materials::materials()
{
MassNumber = AtomNumber = Density = I = a = m = C = X1 = X0 = X = delta = 0.0;
}
materials::materials(double a1, double a2, double a3, double a4, double a5, double a6,double a7, double a8, double a9)
{
MassNumber = a1;
AtomNumber = a2;
Density = a3;
I = a4;
C = a5;
a = a6;
m = a7;
X1 = a8;
X0 = a9;
}
Magnesium.materials(23.0, 12.0, 1.738, 156.0, -4.53, 0.0816, 3.62, 3.07, 0.1499);
Cupper.materials(63.0, 29.0, 8.96, 322.0, -4.42, 0.1434, 2.90, 3.28, 0.0254);
Alluminium.materials(26.0, 13.0, 2.70, 166.0, -4.24, 0.0802, 3.63, 3.01, 0.1708);
Plumbo.materials(207.0, 82.0, 11.34, 823.0, -6.20, 0.0936, 3.16, 3.81, 0.3776);
Water.materials(18.0, 10.0, 1.0, 75.0, -3.50, 0.0911, 3.48, 2.80, 0.2400);
還有我遇到的錯誤;
materials.cpp:64:1: error: 'Magnesium' does not name a type
Magnesium.materials(23.0, 12.0, 1.738, 156.0, -4.53, 0.0816, 3.62, 3.07, 0.1499
);
^
materials.cpp:66:1: error: 'Cupper' does not name a type
Cupper.materials(63.0, 29.0, 8.96, 322.0, -4.42, 0.1434, 2.90, 3.28, 0.0254);
^
materials.cpp:68:1: error: 'Alluminium' does not name a type
Alluminium.materials(26.0, 13.0, 2.70, 166.0, -4.24, 0.0802, 3.63, 3.01, 0.1708
);
^
materials.cpp:70:1: error: 'Plumbo' does not name a type
Plumbo.materials(207.0, 82.0, 11.34, 823.0, -6.20, 0.0936, 3.16, 3.81, 0.3776);
^
materials.cpp:72:1: error: 'Water' does not name a type
Water.materials(18.0, 10.0, 1.0, 75.0, -3.50, 0.0911, 3.48, 2.80, 0.2400);
^
make: *** [materials.o] Error 1
我正在Linux上的GCC 4.9.0和Windows上的GCC 4.8.1上使用MinGW進行嘗試。 我讀過其他有關它的文章,但我做不到。 為什么會出現此錯誤?
您可能應該對C ++中的類如何工作進行深入的介紹。
問題是,您試圖通過先聲明一些奇怪的兩部分構造
materials Magnesium;
然后嘗試顯式調用
Magnesium.materials(23.0, 12.0, 1.738, 156.0, -4.53, 0.0816, 3.62, 3.07, 0.1499);
但是構造函數在C ++中不能像這樣工作!
您應該這樣做:
materials Magnesium(23.0, 12.0, 1.738, 156.0, -4.53, 0.0816, 3.62, 3.07, 0.1499);
這實際上不是解釋類構造細節的地方,但是我可以肯定地說,您應該對此做更多的研究。
如果希望這些全局變量可在其他源文件中訪問:
在頭文件中更改為:
extern materials Magnesium;
extern materials Cupper;
extern materials Alluminium;
extern materials Plumbo;
extern materials Water;
在源文件中更改為:
materials Magnesium(23.0, 12.0, 1.738, 156.0, -4.53, 0.0816, 3.62, 3.07, 0.1499);
materials Cupper(63.0, 29.0, 8.96, 322.0, -4.42, 0.1434, 2.90, 3.28, 0.0254);
materials Alluminium(26.0, 13.0, 2.70, 166.0, -4.24, 0.0802, 3.63, 3.01, 0.1708);
materials Plumbo(207.0, 82.0, 11.34, 823.0, -6.20, 0.0936, 3.16, 3.81, 0.3776);
materials Water(18.0, 10.0, 1.0, 75.0, -3.50, 0.0911, 3.48, 2.80, 0.2400);
如果您不希望在其他源文件中訪問這些全局變量:
從頭文件中刪除它:
materials Magnesium;
materials Cupper;
materials Alluminium;
materials Plumbo;
materials Water;
在源文件中更改為:
static materials Magnesium(23.0, 12.0, 1.738, 156.0, -4.53, 0.0816, 3.62, 3.07, 0.1499);
static materials Cupper(63.0, 29.0, 8.96, 322.0, -4.42, 0.1434, 2.90, 3.28, 0.0254);
static materials Alluminium(26.0, 13.0, 2.70, 166.0, -4.24, 0.0802, 3.63, 3.01, 0.1708);
static materials Plumbo(207.0, 82.0, 11.34, 823.0, -6.20, 0.0936, 3.16, 3.81, 0.3776);
static materials Water(18.0, 10.0, 1.0, 75.0, -3.50, 0.0911, 3.48, 2.80, 0.2400);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.