[英]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.