vs2010 一些error型別及其解決方案

2021-06-21 16:17:01 字數 1901 閱讀 8766

error c2872: 'cout' : ambiguous symbol:模糊不清的標記 :可能cout被定義了多次

error lnk2019: 沒有包含標頭檔案,或者沒有定義函式,或者沒有導入庫。

還有種,當建立乙個專案a後,同時生成解決方案後,在此專案上又刪除了.h和.cpp檔案,重新建立其他的.h和.cpp檔案後,再執行也可能出錯,因為之前生成a後會在debug下產生某些檔案,可能對這次新的生成檔案產生影響。要這樣,必須重新生成解決方案!!!!!

錯誤 1 error c2143: 語法錯誤 : 缺少「;」(在「&」的前面)

錯誤 2 error c2433: 「ostream」: 不允許在資料宣告中使用「friend」

錯誤 3 error c4430: 缺少型別說明符 - 假定為 int。注意: c++ 不支援預設 int

這些都是乙個錯誤,;之前的那個變數沒有被定義,在這裡就是ostream,所以加入就可以了

錯誤 4 error c2248: 「std::basic_ios<_elem,_traits>::basic_ios」: 無法訪問 private 成員(在「std::basic_ios<_elem,_traits>」類中宣告) c:\program files (x86)\microsoft visual studio 10.0\vc\include\fstream 890-------------解決方案:istream(ostream)的拷貝建構函式被申明為私有的,使用istream,ostream做引數傳遞時要使用引用,防止呼叫拷貝建構函式

ifstream、ofstream這兩個類的都間接繼承自模板類basic_ios的類例項,看一下basic_ios的源**就一目了然了:

private:

__clr_or_this_call basic_ios(const _myt&); // not defined

_myt& __clr_or_this_call operator=(const _myt&); // not defined

basic_ios的複製建構函式、賦值建構函式均為私有函式並且沒有任何實現,ifstream/ofstream的間接父類沒有複製建構函式的實現,那麼呼叫複製建構函式還會成功麼?當然不會

總之,流不可複製從流的祖先basic_ios就已經開始了。

錯誤5 if (this->_myres < _newsize)

_copy(_newsize, this->_mysize); // reallocate to grow

若在除錯的時候出現此bug,可能錯誤及其解決方案為:若結構體a中存在指向另乙個結構體b的指標,在對a動態申請記憶體時,b也需要動態申請記憶體,否則出現此bug。

親身體會,花了乙個多小時才解決

錯誤6 我用迴圈的方式從二進位制檔案中迴圈讀取結構體物件資訊,用if(fin.eof())break;跳出迴圈,但在之後,我發現如果再使用這個fin.open()函式開啟另乙個二進位制檔案時,檔案指標仍然指向著檔案末尾,再讀入只能讀入空字元,即使採用fin.seekg(ios::beg)語句也不行。求高手幫我解決一下這個問題。

(我用的vc++6.0環境,不要告訴我再建立乙個新的物件,因為我試過那樣一定是正確的,而且如果不用if(fin.eof())break;跳出迴圈也不會讀出空字元,我只是想知道能不能將已經指向檔案結尾的物件再定義到檔案頭)

解決方案:fstream物件如果重複使用,須注意在使用之前先呼叫clear函式,否則會出錯

fin.clear(); //重新開啟檔案前,先clear,再open

在open成功後不會對 fstream中狀態進行操作,而open失敗的話會設定_mystate為failbit,並且在close操作時如果本身是空檔案,也會設定state為failbit,這樣造成一次失敗之後的其他很多操作都是失敗的,因為很多fstream操作會先判斷state;

而clear函式是將fstream狀態重置為goodbit

VS 2010的一些使用技巧

另外,可以給注釋巨集對映快捷鍵的,具體的對映方法如下 選擇tools options environment keyboard,然後在中間那個視窗選擇對應的巨集的名稱即可,譬如下圖所示,我將f3作為函式的注釋巨集快捷鍵 另外,在vs 2010裡面還有常用的快捷鍵,譬如自動注釋 ctrl k ctrl...

vs2010中Calendar控制項的一些使用

一.返回指定日期前後的某一日期 sets a datetime to april 3,2002 of the gregorian calendar.datetime mydt new datetime 2002,4,3,new gregoriancalendar uses the default c...

Matlab2010與VS2010初吻(一)

最近因程式中需要數值計算和做圖表,研究了matlab與vs混合程式設計。結合網上的各種版本及個人摸索,找到一種可行且又簡單易學的方法,現拿與大家分享 一 在matlab中用m檔案生成c c 的dll 開啟matlab 在command視窗輸入mex setup選擇編譯器 在command視窗輸入mb...