第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這不是“我想讓它能讓任意大小的數(shù)組都可以使用”的目的。要如何才能達到這個目的呢?

這不是“我想讓它能讓任意大小的數(shù)組都可以使用”的目的。要如何才能達到這個目的呢?

C++
慕容3067478 2023-04-01 17:13:45
C++一般是不允許數(shù)組作為函數(shù)形參,它會悄悄把數(shù)組形參轉化為指針,因此,我們在寫這些函數(shù)的時候,往往要多加一個size參數(shù),表示數(shù)組的大小,如:void func(int arr[], int size);但是一種情況例外,那就是數(shù)組引用作為函數(shù)形參:void func(int (&arr)[10]);但這樣做有個很大的缺陷,就是只能用固定大小的數(shù)組,而我想讓它能讓任意大小的數(shù)組都可以使用。于是我想,用模板:template <int size>void func(int (&arr)[size]);但是,編譯通不過,說是不能引用zero size的數(shù)組。于是我用改用帶默認值的class模板:template <int size = 10>class Array{public:void func(int (&arr)[size]);};依舊是同樣的錯誤,那我只好用全局變量:static int size = 10;void func(int (&arr)[size]);
查看完整描述

2 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

你的template寫法不對

用模板類的做法是最好的,寫法如下:

template <typename T>

class Array 
{
public: Array(int isize = 0) : size(isize)
{
if (size == 0)
data = NULL;
else
data = new T[size];
};
~Array()
{
if(data) delete [] data; 
};
int GetSize() {return size;}
private: int size;
T *data;
}

上面這個類就可以直接把他的引用或者指針傳到函數(shù)里


void func(Array &arr);

在函數(shù)內部可以用arr.GetSize()來取得其長度。

查看完整回答
反對 回復 2023-04-03
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

你可以換一個思路,傳送整個vector
比如有個 vector v;
你可以定義一個函數(shù) 這樣寫
int getXX(vector &z){...}

這樣使用函數(shù)
getXX(v);

查看完整回答
反對 回復 2023-04-03
  • 2 回答
  • 0 關注
  • 164 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號