不能將this指標從“const type" 轉換為"type &"
當在類中宣告並定義了一個普通的公共成員函式,在主函式裡定義了一個此類的常物件,如果試圖使常物件呼叫非”常成員函式“就會產生如標題所說的:
error: 不能講this指標從"const classtype" 轉換為 "classtype &"。
解決方案是將成員函式定義為常成員函式(常成員函式保證呼叫此函式的物件不會被改變):
class MyClass
{
public:
void foo(void) const;
// else
};
在之後的函式定義中也要加上const關鍵字
void MyClass::foo(void) const { // do something }
如果函式體內會對物件作出改變,也就不應該使用常物件來呼叫。
最後又一個疑問:為什麼error提示不能轉換為"classtype &"而不只是"classtype"呢?
相關推薦
c++;物件引用前加const報錯:不能將“this”指標從“const a”轉換為“a &”
物件引用前加const報錯:不能將“this”指標從“const a”轉換為“a &”#include "stdafx.h" #include <iostream>using namespace std;class a{int i;public:a(in
不能將this指標從“const type" 轉換為"type &"
當在類中宣告並定義了一個普通的公共成員函式,在主函式裡定義了一個此類的常物件,如果試圖使常物件呼叫非”常成員函式“就會產生如標題所說的: error: 不能講this指標從"const classtype" 轉換為 "classtype &"。 解決方案是將成員函
error C2662: 無法將this指標從const轉化為非const
今天在寫程式時遇到了一個報錯: error C2662: 'x' : cannot convert 'this' pointer from 'const class Point3d' to 'class Point3d &' 先看下程式碼: #include &l
MFC遇到的一個字符集問題:不能將引數1從“const char []”轉換為“LPCTSTR”
1、ANSI(即MBCS):為多位元組字符集,它是不定長表示世界文字的編碼方式。ANSI表示英文字母時就和ASCII一樣,但表示其他文字時就需要用多位元組。2、Unicode:用兩個位元組表示一個字元的編碼方式。比如字元'A'在ASCII下面用一個位元組表示,而在Unicode下面用兩個位元組表示,其中高位元
不能將引數從“const char”轉換為wchar_T
一、問題描述 CString str("add\df"); int n = str.Find("\\"); VS 2010編譯是報如下錯誤: 不能將引數1從“sons
關於 錯誤 C2440 “初始化”: 無法從“const char *”轉換為“cv::Formatted *”的一種可能
嚴重性 程式碼 說明 專案 檔案 行 禁止顯示狀態 錯誤 C2440 “初始化”: 無法從“const char *”轉換為“cv::Formatted *” f:\opencv\opencv\build\include\opencv2\core\ptr.inl
解決不能從CONST CHAR *轉換為LPCWSTR
有時候複製了整個框架程式確發現有編譯不通過的問題,命名人家的程式編譯能通過,到了自己編譯的時候卻編譯不能通過,這個時候也許有各種問題,有些問題讓人匪夷所思。 編譯器有時候會根據編碼方式來選擇定義為LPCWSTR還是LPCTSTR LPSTR: 32bit
error C2440: “初始化”: 無法從“const char *”轉換為“char *”
onst char* pc_char = 0; char *cP = pc_char; ////////////////////////////////////////////////// const char* pc_char = 0; char *cP = co
VS2008中關於“MessageBoxW”: 不能將引數 2 從“char [20]”轉換為“LPCWSTR”的錯誤解決
問題:1>d:\users\yangtse\documents\visual studio 2008\projects\winmain\winmain\54.cpp(27) : error C2440: “=”: 無法從“const char [14]”轉換為“LPCW
C++ 錯誤提示:無法將引數1從const char [8] 轉換為char *
#include <iostream> using namespace std; void test(char * p) { cout << p << endl; } int main(void) { test("geerniya")
VC2008編譯出現error2664錯誤:Format(const wchar_t *,...)”:不能將引數 1 從“const char [4]”轉換為“const wchar_t *”
void scesjk::OnBnClickedButton1() //資料記錄 { // TODO: 在此新增控制元件通知處理程式程式碼 UpdateData(true); m_set.Open(); m_set.A
[error2664:Format(const wchar_t *,...)”:不能將引數 1 從“const char [4]”轉換為“const wchar_t *”]的解決
void scesjk::OnBnClickedButton1() //資料記錄 { // TODO: 在此新增控制元件通知處理程式程式碼 UpdateData(true); m_set.Open(); m_set.A
無法將引數1從“const char [6]”轉換為“char *”的解決方法
有一些C++程式在VS2017上執行會有一些錯誤,而在vc6.0中卻能執行出來。接下來的一個程式就是我在vs2017上執行出現錯誤,而在vc6.0上執行出來。但我已經通過分析vs2017上錯誤來源解決了該問題,並以此作為分享。例項碼:#include<i
:MessageBoxW”: 不能將引數 1 從“const char [5]”轉換為“LPCTSTR” 1> 與指向的型別無關;轉換要求 reinterpret_cast、C 樣式
MessageBox("系統選單","提示",MB_OK|MB_ICONINFORMATION); MessageBox(_T("系統選單"),_T("提示"),MB_OK|MB_ICONINFORMATION); 或MessageBox(L"系統選單",L"提示"
不能將引數 2 從“const char [7]”轉換為“LPCTSTR”問題解決辦法
如下語句: ctrlList.InsertColumn(0, "屬性頁", LVCFMT_LEFT, 300, 0); 使用VS2005編譯時提示如下錯誤資訊: error C2664: “int CListCtrl::InsertColumn(int,LPCTSTR,in
C++編譯出現 error C2664: 不能將引數 2 從“const char [5]”轉換為“LPCTSTR”解決辦法。
原因:編譯程式的時候出現這樣的錯誤,原因是在新建MFC專案的時候,設定字符集Unicode的屬性 解決方法一: 在VS的解決方案管理器視窗內,右擊你的專案“專案”,然後選“屬性”(最後一項),再點“配
不能將參數1從“constchar[11]”轉換為“LPCWSTR”
exp inf pyo shuf targe hex left str href 吭尾M浦疑口28狽y蹲2晃http://www.docin.com/vqge481 5乖樸評了1F0Z3FVhttp://shequ.docin.com/hru948 hu4PX馗派51費
如何將視訊從QSV格式轉換為MP4格式
《為了你我願意熱愛整個世界》是愛奇藝獨播的,那麼用其他視訊播放器要怎麼觀看?想要用其他的視訊播放器觀看愛奇藝下載的視訊,需要利用視訊格式轉換器把愛奇藝QSV格式視訊轉換為MP4格式視訊。那麼如何將視訊從QSV格式轉換為MP4格式?怎麼操作?不知道操作方法的網友,不用擔心,接著往下閱讀,下面的文章會告訴
設計一個函數將一個數字字符串轉換為數字,如將”1024”轉換成1024輸出
字符串 const while printf int main 轉換成 pri 一個數 #include <stdio.h>int convert(char *str){ int k=0; while(*str!=‘\0‘) {
將float數據類型轉換為str
bsp 類型 stdio.h ++ 數據類型 例程 sign str == 示例程序: #include <stdio.h> . . void UART_send_byte(char dat); void UART_send_string(u