MyException - 我的异常网
当前位置:我的异常网» C++ » 初学者有关问题 关于一个类是另外一个类的元素的构

初学者有关问题 关于一个类是另外一个类的元素的构造函数如何写(2)

www.MyException.Cn  网友分享于:2013-02-18  浏览:5次
 
 48         {
 49             
 50             
 51             init();     正缺的构造函数怎么写啊ComponentList(){}
 52         }       
 53 */
 54         ComponentList & insert( const Component & s_component)
 55         {
 56             clist[top]=s_component;
 57             top++;
 58             return this;
 59         }
    

------解决方案--------------------
②因为你的参数类型是SchoolName,它是一个枚举类型,那么你需要明确地指定该类型的其中一个值。从0转换到SchoolName虽然是可行的,但编译器不会自动进行这种隐式转换,这必须由你自己进行。虽然不被推荐,但你可以这么写:

void Foo(SchoolName s=(SchoolName)0){
   //......
}


①因为你的Component的默认构造函数(不带参数的那个)被屏蔽了,原因是你为Component定义了带参构造函数(具体见《深入探索C++对象模型》)。而你的List中定义了Component数组,这意味着你必须为Component提供默认构造函数,因为数组必须用它来初始化。
    所以,你只需要为Component提供一个不带参数的默认构造函数即可,如果你不想让外界访问该构造函数,则把它定义为私有的,并声明ComponentList为它的友元类。

class Component {
    friend class ComponentList;
private:
    Component(){ }

 // other codes
}

class ComponentList {
private:
    Component components[128];

    // ......
}

------解决方案--------------------

#include<iostream>
#include<stdio.h>
using namespace std;

typedef enum {A=1,B,C,D} SchoolName;
typedef enum {male=1,female} SexType;
typedef enum {run=1,jump} MatchType;

class Component 
{
private:
SchoolName school;
string name;
SexType sex;
MatchType match;
int score;
public:
Component(SchoolName s_school=D , SexType s_sex=male ,MatchType s_match=run, int s_score=0 , char * s_name="zs");
~Component();
};

Component::Component( SchoolName s_school/*=D */, SexType s_sex/*=male */,MatchType s_match/*=run*/, int s_score/*=0 */, char * s_name/*="zs"*/ )
{
school=s_school;
sex=s_sex;
name=s_name;
match=s_match;
score=s_score;
}
//////
class ComponentList 
{

public:
ComponentList():top(0)
{
init();  
}       
ComponentList & insert( const Component & s_component)
{
clist[top]=s_component;
top++;
return *this;
}
private:
void init()
{
for(int i=0;i<128;i++)
{
clist[i]();

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有