C中關於static的問題

2022-11-16 03:36:14 字數 1366 閱讀 8943

1樓:

我來回答,

靜態方法中,如果有輸出引數的話,該輸出引數必須是靜態成員才可以,靜態方法中使用的成員必須是靜態的。

你這裡宣告的方法getdeptlist,如果兩個引數是輸入引數,那麼是不會報錯的,但是你的引數輸入後,經過函式該處理後,又輸出該引數,相當於成員級,故需使用靜態成員級引數。

另外在使用時,直接呼叫類名.方法名,就可以了。

你可以使用如下修改:

public static string deptid;

public static string deptname;

public static void getdeptlist(out string deptid,out string deptname)

或者public static arraylist deptid = new arraylist();

public static arraylist deptname = new arraylist();

public static void getdeptlist(out arraylist deptid,out arraylist deptname)

這裡把deptid,deptname 宣告成public,在其他類中直接設定初始值,然後呼叫該getdeptlist函式,再直接訪問deptid,deptname 就可以了。

2樓:匿名使用者

你在public static void getdeptlist(out string deptid,out string deptname)

中定義的deptid只是乙個引數的名字而已,並不能直接引用。

在呼叫這個函式之前一定要先定義乙個string型別的變數。假設它是「aaa」;

然後用「aaa」來呼叫getdeptlist函式,這樣getdeptlist函式會把內容直接反映到「aaa」這個變數中。

你在另乙個類中只要可以訪問到「aaa」,就可以使用你說的「deptid」了。

你在另乙個類中使用的是「aaa」,並不是「deptid」。

你可以將上例中的「aaa」定義為「deptid」,但是他和getdeptlist引數中的「deptid」是對同乙個物件的不同引用,作用域不同。

getdeptlist引數中的「deptid」,只在getdeptlist函式中可見,並且作用域無法改變。

你定義的「deptid」(上例中的「aaa」)才是你可以控制的,由你在程式設計時決定它的作用域。比如把它設為public等等。

希望能夠解決你的問題。

3樓:

static是靜態方法 無法用例項化的物件呼叫 必須是用類名.方法名呼叫

static方法中也無法使用類中的各個私有字段

關於C類中帶函式的問題,關於C類中帶函式模板的問題。。

include using namespace std class student class manage int main 大概按照上面的來寫就可以了 大致明白你的意思了。你是想用c 的stl標準的algorithm演算法來排序對吧?如果是這樣,你得自己寫乙個iterator類的東西來處理你的資...

請教關於C 中虛基類的問題,請教關於C 中虛基類的乙個問題

這是個菱形繼承,菱形繼承即是子類有兩個父類,這兩個父類都繼承自同乙個類。這時候,如果不使用虛基類,定義子類的時候,會生成兩個 祖父 基類的樣本,在呼叫 祖父 基類的成員函式的時候,就會出現 歧義 錯誤,無法編譯通過。解決的辦法就是使用虛基類,這樣就只保留乙個 祖父 基類的樣本,呼叫也不會出現 歧義 ...

C 中關於float和double的小問題

寫常數時 19 3 5 這樣寫就是int 4.0 3.14 這樣寫就是double 4.0f 3.14f 這樣寫就是float 運算時,低精度的會自動向高精度轉換,比如有double時,int和float都會轉換成double,你那個表示式中sqrt 返回乙個double,所以其他int都轉成了do...