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 已跳过 ==========
这是错在哪呢?
#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);
// 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
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){}