C++中靜態成員數據初始化問題

C++中靜態成員數據初始化問題

1、靜態成員變量:定義為靜態成員意味著它能被所有的實例化對象所共有,其修改值為該類的其它所有實例所見。

下面看一個例子

class people
{
public:people(int i):id(i){num++;}  
private:static int num;int id;
};

?

num為靜態成員,每調用有參構造一次num就自加一次。

首先看people這個類的空間長度sizeof(people);? ? ?注意結果為4而不是8,因為num是每個實例化對象所共有的,不是單獨一個對象的空間。

下面來看靜態成員的初始化問題:

class people
{
protected:static const int age=18;static int num;static string name;
};
int people::num=0;
string people::name;
string people::name("alex");

1、C++規定如果是const限定的成員變量可以直接在類內初始化

2、非const限定要在類外初始化。初始方法是<類型>? <作用域>::變量名=值;

3、靜態對象做成員變量,初始化只需要再定義一次就行了,這樣會調用類的無參構造,如果需要傳遞值則加括號。

?

3、兩種處理方式,C++11編譯器報錯

第一種代碼如下:

Frame.h文件

class Frame{public:Frame();//Frame(const cv::Mat  &frame):mCurrentFrame(frame){};//main函數直接調用read來讀取圖像,傳遞給Frame類內部//Frame(const cv::Mat  &frame, const cv::Mat K);//main函數直接調用read來讀取圖像,傳遞給Frame類內部Frame(const cv::Mat K);void showFrame(cv::Mat keyFrame);cv::Mat ImageToGray();//彩色圖像轉換灰度圖cv::Mat getCameraMatrix();cv::Mat getDistMatrix();//cv::Mat cropImg();//裁剪//ReadFile  *readFile;//ReadCalibParameter();//float fx;private://cv::Mat mCurrentFrame;static cv::Mat mK;    //std::string mCurrentFile;static float fx;static float fy;static float cx;static float cy;};

Frame.cpp文件

Frame::Frame(const cv::Mat K){//mCurrentFile = CurrentFile; //mCurrentFrame = frame;/*cv::FileStorage fsSetting(camerParamterPath.c_str(), cv::FileStorage::READ);if (!fsSetting.isOpened()){std::cerr << "ERROR: Failed to open file ReadAlgorithmParameter file! Please check Wrong path to settings " << mFilePath << std::endl;return -1;}fx = fsSetting["fx"] ;fy = fsSetting["cx"] ;cx = fsSetting["fy"] ;cy = fsSetting["cy"] ;*/fx = K.at<float>(0,0);fy = K.at<float>(1,1);cx = K.at<float>(0,2);cy = K.at<float>(1,2);}

編譯器報錯信息:意思是靜態成員是未定義的引用;根本原因就是沒有在類外對靜態成員進行初始化

?

修正:

class Frame{public:Frame();//Frame(const cv::Mat  &frame):mCurrentFrame(frame){};//main函數直接調用read來讀取圖像,傳遞給Frame類內部//Frame(const cv::Mat  &frame, const cv::Mat K);//main函數直接調用read來讀取圖像,傳遞給Frame類內部Frame(const cv::Mat K);void showFrame(cv::Mat keyFrame);cv::Mat ImageToGray();//彩色圖像轉換灰度圖cv::Mat getCameraMatrix();cv::Mat getDistMatrix();//cv::Mat cropImg();//裁剪//ReadFile  *readFile;//ReadCalibParameter();//float fx;private://cv::Mat mCurrentFrame;static cv::Mat mK;    //std::string mCurrentFile;static float fx;static float fy;static float cx;static float cy;};float Frame::fx = 0;float Frame::fy = 0;float Frame::cx = 0;float Frame::cy = 0;

在Fram.cpp 的最后,對類的靜態成員進行初始化

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256731.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

moss2010 sharepoint 2010配置人員搜索

配置人員搜索 http://technet.microsoft.com/zh-cn/library/ee721049.aspx 相關補丁 http://support.microsoft.com/kb/2276339/zh-cn Search Configuration in SharePoint 2010 http://blog.concurrency.com/sharepoint/search-configuration-in-sharepoint-2010/ SharePoint …

現代制造工程筆記04-精密超精密加工和特種加工(主要掌握加工原理加工條件)

一、精密加工與超精密加工 不同時期對精密加工的定義以及要求不一樣 1.1金剛石超精密加工&#xff08;&#xff09; 1.2精密磨料加工——精密砂帶拋光加工 1.3超聲波加工 1.4 電解加工&#xff08;加工材料必須是金屬&#xff09;——工件失去電子成型 1.5電鑄加工——工件得到…

Mysql中用SQL增加、刪除字段,修改字段名、字段類型、注釋,調整字段順序總結...

轉自&#xff1a;http://www.111cn.net/database/mysql/71648.htm 1.增加一個字段 代碼如下復制代碼//增加一個字段&#xff0c;默認為空 alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一個字段&#xff0c;默認不能為空 alter table user add COLUMN n…

iOS設置UIWebView的UserAgent

接入第三方時&#xff0c;別人又需求,要求傳入我們的信息。 // 獲取 iOS 默認的 UserAgent&#xff0c;可以很巧妙地創建一個空的UIWebView來獲取&#xff1a;NSString *userAgent [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString:"navigator.userAge…

linux安裝VScode

1、從官網下載Visual Studio Code 安裝包 下載地址&#xff1a;https://code.visualstudio.com/docs?dvlinux64 2、解壓下載的VScode安裝包 tar -xzvf code-stable-1554971043.tar.gz 3、將解壓的文件夾 VSCode-linux-x64移動到目錄 /usr/local下 mv VSCode-linux-x64 …

解析發展方向,定格人生道路

kingdba&#xff1a; 自從參加到電信集團集成 工作&#xff0c;kingdba一直從事著數據庫管理&#xff0c;服務器維護管理工作&#xff0c;目前手上類似項目實施與維護并不是很多&#xff0c;有幸的是一直也在參加做企業私有云建設工作。 私有云建設&#xff1a;當前主要有三類…

現代制造工程筆記05-表面工程技術

機械零部件對表面處理的技術 1.表面預處理 2.表面強攻和改性 殘余壓應力會導致裂紋的傾向 3.表面涂敷和表面膜 熱蒸鍍速度慢&#xff0c;厚度好控制&#xff1b;電子束蒸鍍效率高&#xff0c;精度高 離子膜是最好的鍍膜方法 4.表面膜——托合金法

使用Spring MVC,Mybatis框架等創建Java Web項目時各種前期準備的配置文件內容

1、pom.xml 首先&#xff0c;pom.xml文件&#xff0c;里面包含各種maven的依賴&#xff0c;代碼如下&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

WinForm窗體PropertyGrid控件的使用

使用過 Microsoft Visual Basic 或 Microsoft Visual Studio .NET的朋友&#xff0c;一定使用過屬性瀏覽器來瀏覽、查看或編輯一個或多個對象的屬性。.NET 框架 PropertyGrid 控件是 Visual Studio .NET 屬性瀏覽器的核心。PropertyGrid 控件顯示對象或類型的屬性&#xff0c;并…

ROS環境下跑orb-slam2 單目相機

1、配置環境、安裝ROS ubuntu16.04 kinetic 2、安裝依賴 cmake opencv Eigen3: sudo apt-get install libeigen3-dev 3、創建catkin_ws 文件夾&#xff0c;并ROS初始化工作空間 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd ~/catkin_ws/ …

有限元筆記05——板單元(4節點12自由度)和殼單元(4節點24自由度)

plane單元主要是受拉伸&#xff0c;plate板單元主要受彎曲應力&#xff0c;二者相加就形成了shell殼單元

鼠標提上去彈出提示層(定位)

希望的效果如圖&#xff1a; 網上找了各純css的 做了下修改&#xff1a; 代碼如下&#xff1a; 1234567891011121314151617181920212223242526272829303132333435363738394041424344<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w…

Codevs 4560 NOIP2015 D2T2 子串

> 4560 NOIP2015 D2T2 子串時間限制: 1 s空間限制: 128000 KB題目等級:黃金 Gold 題目描述 Description 有兩個僅包含小寫英文字母的字符串A和B。現在要從字符串A中取出k個互不重疊的非空子串&#xff0c;然后把這k個子串按照其在字符串A中出現的順序依次連接起來得到一個新…

方差和協方差的數據意義

方差和協方差 定義 方差 度量單個隨機變量的離散程度&#xff0c;公式如下&#xff1a; 協方差 度量兩個隨機變量&#xff08;變化趨勢&#xff09;的相似程度&#xff0c;定義如下&#xff1a;

Git 添加空文件夾的方法

http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a-git-repositoryAnother way to make a directory stay empty (in the repo) is to create a .gitignore inside that directory that contains two lines: 在空目錄下創建.gitignore文件。 文…

《CSS揭秘》學習demo:第三章 形狀

這本書非常實用&#xff0c;我利用這一章所講的技巧自己做了幾個有意思的圖標&#xff0c;每個圖標都只用一個元素實現。 demo地址&#xff1a;http://codepen.io/Tutaizi/pen/akKQXo/轉載于:https://www.cnblogs.com/tuzisxy/p/5715351.html

SAP ABAP規劃 使用LOOP READ TABLE該方法取代雙LOOP內部表的方法

如上&#xff0c;用雙LOOP的方法實現兩個內表匹配篩選性能不高&#xff0c;能夠換成以下LOOP READ TABLE的方法 注意問題&#xff0c;gwa_vbap工作區READ TABLE之前需要排空。 版權聲明&#xff1a;本文博主原創文章。博客&#xff0c;未經同意不得轉載。 轉載于:https://www.c…

memcpy(cv::Mat.data,unsigned char *,320x240),保存數據失真問題解決方法

1、memcpy&#xff08;unsigned char *C&#xff0c;cv::Mat.data A,,320x240)&#xff0c;首先A是圖像完整的&#xff0c;通過copy到C中的時候&#xff0c;再copy到新的cv::Mat 圖像的對象上時&#xff0c;圖像發生失真 memcpy&#xff08;cv::Mat B.data,unsigned char *C,3…

有限元ansys/lsdyna學習筆記-組件component與組元part_02

詳細鏈接&#xff1a;https://wk.baidu.com/view/d24db6db856a561252d36f99?ivk_sa1023194j