国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于結構體的一些細節問題

2019-11-08 20:07:45
字體:
來源:轉載
供稿:網友

結構體中的易錯點


作為一名蒟蒻,我常常在各種各樣的編程問題上磕磕絆絆。今天又是這樣。

問題 I

大致就是當我聲明了一個結構體edge,然后又自定義了一個構造函數edge(int …)(帶參的),然后。。。我想要聲明一個edge的數組,編譯器卻一直在報錯: (部分代碼如下)

typedef struct edge{ int n,u,v,l; edge(int n,int u,int v,int l){ this->n=n; this->u=u; this->v=v; this->l=l; }}edge;edge e[maxn];

(編譯器報錯如下)

[Error] no matching function for call to ‘edge::edge()’

然后我就調啊調,最后在網上找到了一篇文章,終于解決了我的問題,下面我就來分享一下

解決方案

定義結構體數組要有默認構造函數才行,如果你沒有定義構造函數,那編譯器就會自動給你生成一個,但只要你定義了構造函數,編譯器就不再幫你生成了,所以你的錯誤是沒有默認構造函數,要改的話,給你上面那個構造函數的參數全部加上缺省值就可以了————來自某好心人

這個的意思是我還應該再編寫一個無參構造函數,因為原來的那個被我重載掉了。。。 加上下面這一段代碼就好了(在結構體內部加入):

edge():n(0),u(0),v(0),l(0){}

于是這個問題就這樣過去了

問題 II

后來在給結構體數組賦值時,我是這樣寫的:

e[i]=new edge(i,x,y,l);

然后就又錯了

然而我改成這樣就正確了:

e[i]=edge(i,x,y,l);

應該是new只能給指針類型的初始化吧,我這個已經有了構造函數直接賦值就好,總之C++真是博大精深

╮(╯▽╰)╭。。。我真是太弱了


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍州市| 江津市| 霸州市| 靖远县| 辽宁省| 刚察县| 台北市| 林甸县| 洛隆县| 宁波市| 吴旗县| 法库县| 密山市| 大荔县| 岑巩县| 白城市| 方城县| 田东县| 天气| 大英县| 平湖市| 大厂| 聊城市| 隆林| 洞口县| 巫山县| 岳池县| 江陵县| 于田县| 明水县| 新野县| 林西县| 乐安县| 修水县| 汾西县| 济宁市| 彰化市| 德江县| 鄯善县| 遂宁市| 临湘市|