

如圖,畫圈圈那里俺想呼叫的是Date的那個含參建構式,但是俺不知道咋整,改了好幾次都報錯,具體頭檔案的程式是這個樣子的
#ifndef MENBER_H
#define MENBER_H
#include <string>
#include <iostream>
using namespace std;
class Date
{
int *year;
int *month;
int *day;
public:
Date(int len); //帶參建構式用于初始化資料成員
~Date();
void Set_date(int ); //鍵入生日資訊
void Get_date(int ); //輸出生日資訊
};
class Menber
{
public:
Menber();
Menber(int len); //帶參建構式用于初始化資料成員
virtual ~Menber();
int i;
inline void header1(); //構建輸入一個表頭
inline void header2(); //構建一個輸出表頭
void set_data(int ); //鍵入成員資訊
void show_data(int ); //輸出成員資訊
void repete(int); //回圈鍵入
void repete1(int); //回圈輸出
private:
string *mem_name;
string *mem_sex;
int *mem_num;
string *mem_identity;
Date birth(int i);
};
void Menber::header1()
{
cout<<"請輸入成員資訊:\n"<<"編號\t"
<<"姓名\t"<<"性別\t"<<"身份證號\t"
<<"出生年 月 日\t"<<endl;
}
void Menber::header2()
{
cout<<"成員資訊如下:\n"<<"編號\t"
<<"姓名\t"<<"性別\t"<<"身份證號\t"
<<"出生年 月 日\t"<<endl;
}
#endif // MENBER_H
uj5u.com熱心網友回復:
沒有Date建構式的代碼嗎?看看它的代碼傳給len引數后是怎么賦值給year,month,day的?你可以試試
private:
...
Date birth(20200405); //這樣傳引數試試
uj5u.com熱心網友回復:
應該跟你的代碼沒問題,我在VS2015 C++環境下,把代碼放到main()函式之外,cpp檔案的起始位置處,沒有報錯。uj5u.com熱心網友回復:
class Menber中的Date birth(int i);
,這是一個函式宣告啊~~~你應該這樣寫:Date birth;
同時需要在建構式中初始化:
Menber::Menber(int len):birth(len){
//......
}
默認建構式比如:
Menber::Menber():birth(0){
//......
}
uj5u.com熱心網友回復:
你這寫法,編譯器應該會認為是函式宣告。然后找不到Date和函式體的定義。想不清楚你在哪里看到的這種語法。類成員的初始化或賦值不是應該放到建構式和初始化函式串列中么。。。uj5u.com熱心網友回復:
呃,其實我在那里弄了個Date birth(int i )里面那個“int i” 是想表達說這里有個int型的引數,想要呼叫Date類中的含參建構式來初始化這個成員,是給大家看的,就是說我寫程式的時候不是這么寫的(其實是我不知道應該怎么寫,之前寫的都報錯了。。。)uj5u.com熱心網友回復:
我的這個含參構造是這樣的:
Date::Date(int len )
{
year = new int[len];
month = new int[len];
day = new int[len];
}
然后我試了一下直接在Date birth()括號里直接用數值Date bieth(10)這樣,但還是報錯了。
uj5u.com熱心網友回復:
我覺得類這個東西本身就很不好轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71295.html
標籤:C++ 語言
上一篇:beamerPPT目錄
下一篇:VS問題求解
