簡體   English   中英

如何初始化類內浮點常量?

[英]How can I initialize an in-class floating point constant?

我最近遇到了無法在類常量中初始化的Visual C ++ 2005,遇到了無處不在的錯誤

“錯誤C2864:...:只能在類中初始化靜態const積分數據成員”

從類似的代碼

class MyClass:
{
private:
   static const double myConstant = 2.9768;
}

我已經能夠發現非整數類型是問題,並且有幾種方法可以使用整數常量,但是我沒有找到一個令人滿意的解決方法來定義作用於類的常量。 這種類型的聲明在以后/其他編譯器中是否合法?

在C ++ 03中,您必須在類定義之外初始化非整數靜態常量:

struct Foo
{
    static const double value;
};
const double Foo::value = 0.5;

在C ++ 11中,您可以從內聯的常量表達式初始化任意constexpr essions:

struct Foo
{
    static constexpr double value = 0.5;
};

您可能需要或可能不需要為變量提供定義,具體取決於您是否在代碼中的其他位置(例如,通過獲取其地址)。

在類定義之外,在源文件(不是標題,或冒險鏈接器錯誤)中執行此操作。

const double MyClass::myConstant = ..;

此行為是由C ++語言標准強制執行的。 沒有法律解決方法。

從頭文件中取出初始化並將其放入.cpp中:

const double MyClass::myConstant = 2.9768;

暫無
暫無

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

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