比如我写了一个类
class T
{
public:
T(char o[],int r,double t,double a):e(r),ekj(t),k(a)
{
strcpy(a,o);
}
protected:char a[10];int e,double ekj,double k;
}
class RE:public T
{
public:RE(char o[],int r,double t,double a):T(o,r,t,a){}//这一行有问题我要怎么写类对象的初始化
protected:
T s[100];
}
ä½ å¥½ï¼T s[100] è¿æ ·åï¼sä¼è°ç¨Tçé»è®¤æé å½æ°ï¼ç¶èä½ å¹¶æ²¡æç»åºãæ以è¿æ ·åä¸è¡ãå¦ææ³åå§åæ°ç»ï¼å¯ä»¥èèç¨vectorï¼ä¾å¦
#include <string>#include <iostream>
#include <vector>
using namespace std;
class T
{
public:
T(char o[], int r, double t, double a)
:e(r), ekj(t), k(a)
{
strcpy(m_a, o);
}
protected:
char m_a[10];
int e;
double ekj;
double k;
};
class RE :public T
{
public:
RE(char o[], int r, double t, double a)
:s(100, T(o, r, t, a)) // åå§åsï¼sæ100个å ç´
,T(o,r,t,a) // è°ç¨åºç±»æé å½æ°
{}
protected:
vector<T> s;
//T s[100];
};
æé纳ï¼è°¢è°¢
æ®éçä¾ååæ ¼å¼ï¼ä¸é¢çmonitorå°±æ¯student1éçå对象ï¼æ¥èªstudentï¼ä½æ¯ä»ä¸æ¯æ°ç»ï¼å¦ææ¯æ°ç»é£è¦æä¹åï¼student1(int n,string nam,int n1,string nam1,int a ,stringad):monitor(n1,nam1),student(n,nam)
追çå¦æéè¦ç¨æ°ç»çè¯ï¼ä½ è¦æ»¡è¶³ä¸¤ä¸ªæ¡ä»¶ï¼
1. ç»åºç±»ä¸ä¸ªé»è®¤æé å½æ°ï¼æ¯å¦ä½ çTç±»ä¸è¦æä¸ä¸ª
Tï¼ï¼{} // Tçé»è®¤æé å½æ°2. ä¸è½ç¨list initializationï¼éè¦å¨åç±»çæé å½æ°ä¸éä¸å¯¹æ°ç»çæ¯ä¸ä¸ªå ç´ åå§å
RE::RE(char o[], int r, double t, double a){
for(int i=0; i<100; i++)
s[i] = T(..)
...
}
ä¸ç¶REç±»çç¼è¯ä¼æé®é¢ã
你会么?这是有子对象的派生类的构造函数
追答确实不是你构造函数的问题啊,是你T类的构造函数少了无参的情况,而你子类RE里又用了T s,所以肯定不对啊,然后你注释的那一行的冒号怎么是中文的????
追问student1(int n,string nam,int n1,string nam1,int a ,stringad):monitor(n1,nam1),student(n,nam)这是普通的格式,里面student是基类,加1是派生类,monitor是子对象,然后他不是数组,然后我用的是数组,那我这边怎么初始化?像普通对象的话无法初始化
追答我怎么不懂你在说什么,完整的代码也不发