非靜態成員引用必須與特定物件相對

2021-06-06 05:22:22 字數 650 閱讀 3584

#pragma once

// cdlgload 對話方塊

class cdlgload : public cdialogex

;

cdlgset::cdlgset(cwnd* pparent /*=null*/)

: cdialogex(cdlgset::idd, pparent)

, m_editserverip(_t(""))

, m_editport(_t(""))

報錯:非靜態成員必須與特定物件相對。

分析:類的成員有兩種:靜態成員和例項成員(包括例項和函式)。例項成員的儲存空間屬於具體的例項,不同例項(物件)的同名成員擁有不同的儲存空間;靜態成員的儲存空間是固定的,與具體的例項(物件)無關,被該類的所有例項共享。

訪問靜態成員可以用classname::membername,也可以用classname.membernme,但最好用前者,因為很容易就可以判定成員是靜態成員。

訪問例項成員只能用classname.membername,不能用classname::membername.

本例中就是因為用classname::membername訪問例項變數出錯。

詳情 

靜態成員與非靜態成員

靜態成員屬於類,而非靜態成員屬於類的例項。兩者的主要區別是static關鍵字,靜態成員使用static關鍵字宣告,放在型別之前,而非靜態成員則沒有。每次類被例項化之後,類中的非靜態成員就會隨著例項複製乙份過去,而靜態成員則仍然保留在類中。靜態成員和非靜態成員是不能互相呼叫。也就是說,靜態方法只能呼叫...

靜態成員與非靜態成員區別

若將類中的某個成員宣告為static 該成員稱為靜態成員類中的成員要麼是靜態 要麼是非靜態的一般說來靜態成員是屬於類所有的非靜態成員則屬於類的例項 物件 以下示例 演示了如何宣告靜態和非靜態成員 程式清單10 5 using system class test int x static int y ...

C 中靜態成員與非靜態成員

靜態成員和非靜態成員 若將類中的某個成員宣告為 static 該成員稱為靜態成員,類中的成員要麼是靜態,要麼是非靜態的。一般說來靜態成員是屬於類所有的,非靜態成員則屬於類的例項。以下示例 演示了如何宣告靜態和非靜態成員。using system class test static void g st...