7週目に改める

1277 ワード

*/
*Copyright(c)2011、煙台大学コンピュータ学院
 * All rights reserved.
*著者:王俊
*完了日:2013年4月13日
*バージョン番号:v 1.0
*説明を入力:
*問題の説明:
*/
元のエラー:
#include <iostream>
#include <string>
using namespace std;
class Box
{
 public:
 Box(int h,int w,int l):height(h),width(w),length(l){}
 int volume( ){return height*width*length;};
 private:
 static int height;  //       
 int width;
 int length;
};
int main()
{
    Box b(2,3,4);
    cout<<"volume is "<<b.volume()<<endl;
    return 0;
}

エラーの原因:コンストラクション関数で静的クラスデータを初期化できません
変更後の手順:
#include <iostream>
#include <string>
using namespace std;
class Box
{
 public:
 Box(int w,int l):width(w),length(l){}
 int volume( ){return height*width*length;};
 private:
 static int height;  //       
 int width;
 int length;
};
int Box::height=2;
int main()
{
    Box b(3,4);
    cout<<"volume is "<<b.volume()<<endl;
    return 0;
}

実行結果:心得:静的データメンバーはクラス外で値を指定します.