2011-12-28 68 views
1

我的程序使用數字PI。它應該是不變的值const double PI = 3.14。我希望程序的用戶可以在類的初始化過程中定義這個常量。例如,其中一個需要3.14和另一個3.1416926。並且在定義之後它應該是恆定的值,即在程序期間沒有人可以改變它。我怎樣才能實現它?由用戶定義的C++常量變量

+1

「3.1416926」 π是一個相當差的近似。 – 2011-12-28 18:21:53

+0

你可以使用'constexpr'嗎? – tenfour 2011-12-28 18:21:53

+0

或者,如果您的編譯器支持它,您可以使用'M_PI',因爲pi是一個具有明確定義的常量。 – 2011-12-28 18:28:01

回答

6

可以使用常量成員創建以每個實例常數:

class MyClass { 
    MyClass(double pi): PI(pi) { ... } 
    const double PI; 
}; 

每個對象創建我指定PI值來使用,這是該對象的生存期內保持不變:

MyClass obj1(3.14); 
MyClass obj2(3.1416926); 
-1

const double PI = 3.141592653589793238462643383279502884197169399375105820974944置於.h頭文件中,並將其包含在.cpp文件中。 或者你會得到那個錯誤。

pi.h

const double PI = 3.141592653589793238462643383279502884197169399375105820974944; 

Pi.cpp

#include <iostream> 
#include "pi.h" 
using namespace std; 

class Pi_Class 
{ 
     public: 

     double m_PI; 

     Pi_Class() 
     { 
        cout<<PI<<" \n"; 
     } 

     Pi_Class(double fPI) 
     { 
      m_PI=fPI; 
        cout<<m_PI<<" \n"; 
     } 
}; 


int main() 
{ 

    Pi_Class Pi_one(3.141); 
    Pi_Class Pi_two(3.1415926535); 
    Pi_Class Pi_thr(3.141592653589793238462643383279502884197169399375105820974944); 

    return 0; 
} 
+0

這不允許多個pi的值,這就是OP之後的情況。 – 2011-12-28 18:29:28