首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VS2010关于类的构造函数的有关问题。初始化成员列表

2012-03-03 
VS2010关于类的构造函数的问题。初始化成员列表。今天初始化了一个类,出了以下错误提示,看得不大懂,发出帖子

VS2010关于类的构造函数的问题。初始化成员列表。
今天初始化了一个类,出了以下错误提示,看得不大懂,发出帖子向各大侠求救:

1>------ 已启动生成: 项目: Genealogy Management System, 配置: Debug Win32 ------
1>正在编译...
1>genealogy.cpp
1>g:\genealogy management system\genealogy management system\genealogy management system\genealogynode.cpp(20) : error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it)' : cannot convert parameter 1 from 'genealogyNode *' to 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> Constructor for struct 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it' is declared 'explicit'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1>g:\genealogy management system\genealogy management system\genealogy management system\genealogy.cpp(287) : error C2664: 'genealogyNode::genealogyNode(std::string,std::string,std::string,std::string,std::string,std::string,std::string,genealogyNode *,genealogyNode *,genealogyNode *)' : cannot convert parameter 7 from 'genealogyNode *' to 'std::string'
1> No constructor could take the source type, or constructor overload resolution was ambiguous
1>g:\genealogy management system\genealogy management system\genealogy management system\genealogy.cpp(296) : error C2664: 'genealogyNode::genealogyNode(std::string,std::string,std::string,std::string,std::string,std::string,std::string,genealogyNode *,genealogyNode *,genealogyNode *)' : cannot convert parameter 7 from 'genealogyNode *' to 'std::string'
1> No constructor could take the source type, or constructor overload resolution was ambiguous
1>genealogyNode.cpp
1>g:\genealogy management system\genealogy management system\genealogy management system\genealogynode.cpp(20) : error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it)' : cannot convert parameter 1 from 'genealogyNode *' to 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> Constructor for struct 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it' is declared 'explicit'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1>Generating Code...
1>生成日志保存在“file://g:\Genealogy Management System\Genealogy Management System\Genealogy Management System\Debug\BuildLog.htm”
1>Genealogy Management System - 4 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

这是错在哪呢? 

C/C++ code
#include <iostream>#include <cstring>        // string型数据#include <string>#include <stdlib.h>        // exit(1)#include "genealogyNode.h"using std::string;// 第一个构造函数,仅带双亲结点,左右孩子,默认值为NULLgenealogyNode::genealogyNode(genealogyNode * p = NULL, genealogyNode * l = NULL, genealogyNode * r = NULL)                   : parent(p), leftChild(l), rightChild(r){}        // 第二个构造函数,支持全部数据成员的输入genealogyNode::genealogyNode( string n, string s, string dD, string bD, string bT, string j, string re,                              genealogyNode * p = NULL, genealogyNode * l = NULL, genealogyNode * r = NULL)                             :    parent(p), leftChild(l), rightChild(r), remark(r), job(j), name(n){                        sex = translateInSex(s);                        dieDate = translateInDate(dD);                        bornDate = translateInDate(bD);                        booldType = translateInBooldType(bT); 



C/C++ code
// genealogyNode.h -- 家谱结点类#ifndef GENEALOGYNODE_H#define GENEALOGYNODE_Hclass string;using std::string;class genealogyNode{public:    string name;        // 名字    char sex;            // 姓别, m代表男姓,f代表女姓    long dieDate;        // 死亡日期,[5...8][1...9999][1..12][1...31]    long bornDate;        // 出生日期,[5...8][1...9999][1..12][1...31]    char booldType;        // 血型,O型:o, AB型:c, A型a, B型b    string job;            // 工作    string remark;        // 备注,当为空时,用[...]表示    genealogyNode * parent;    genealogyNode * leftChild;    genealogyNode * rightChild;public:    // 第一个构造函数,仅带双亲结点,左右孩子,默认值为NULL    genealogyNode(genealogyNode *, genealogyNode *, genealogyNode *);        // 第二个构造函数,支持全部数据成员的输入    genealogyNode(string, string, string, string, string, string, string, genealogyNode *, genealogyNode *, genealogyNode *);    char translateInSex(string);        // 将string类型的sex数据转为char型存储    long translateInDate(string);        // 将string类型的Date数据转为long型存储    char translateInBooldType(string);    // 将string类型的booldType数据转为int型存储    long transInDateHelp(char);            // 作为数据转换的辅助函数    string transOutDateHelp(long);    string translateOutSex();            // 将类中的数据成员sex的数据转出为string类型    string translateOutDate(char type);    // 将类中的数据成员Date的数据转出为string类型    string translateOutBooldType();        // 将类中的数据成员booldType数据转出为string类型};#endif // genealogyNode.h


[解决办法]
看注释

C/C++ code
genealogyNode::genealogyNode( string n, string s, string dD, string bD, string bT, string j, string re,                              genealogyNode * p = NULL, genealogyNode * l = NULL, genealogyNode * r = NULL)                             :    parent(p), leftChild(l), rightChild(r), /*remark(r), */job(j), name(n){} 

热点排行