簡體   English   中英

聲明浮點常量時出錯

[英]Error declaring float constants

我正在聲明一個需要一些公共常量的類。 我的想法是宣布這樣的:

class MyClass {
 public:
  const int kIntConst = 1234;
  const float kFloatConst = 1234.567f;
  // ...methods...
};

這種方法適用於int常量,但對於float失敗,出現以下錯誤:

error C2864: 'MyClass::kFloatConst' : only static const integral data members can be initialized within a class

好吧,我確實理解這個錯誤信息。 它說我不能在類聲明中聲明一個float(非整數)常量。 所以,問題是:為什么!? 為什么它可以是int而不是float

我知道如何解決這個問題。 kFloatConst聲明為靜態const成員並稍后在.cpp中初始化可以解決問題,但這不是我想要的。 我需要一個編譯時常量(一個可以通過編譯器優化的常量),而不是需要.obj文件鏈接的常量類成員。

使用宏可能是一個選項,但宏沒有命名空間,我不喜歡全局定義的常量。

一般規則是您不能在類聲明中定義常量。

然后有一個例外,即無論如何允許積分常數。 所以int常量不是規則,而是異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM