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

neicole 2012-01-28 05:51:51
今天初始化了一个类,出了以下错误提示,看得不大懂,发出帖子向各大侠求救:

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;

// 第一个构造函数,仅带双亲结点,左右孩子,默认值为NULL
genealogyNode::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_H

class 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
...全文
297 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
neicole 2012-01-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feng32tc 的回复:]
看注释


C/C++ code

genealogyNode::genealogyNode( string n, string s, string dD, string bD, string bT, string j, string re,
genealogyNode * p = NULL, genealogyNode * ……
[/Quote]

晕,看了这么多次,竟然看不出漏了个e, re才是正确。。。。

谢谢。。。再改了几次后,把继承的函数对应上以后,正确了。结帖。。
feng32tc 2012-01-28
  • 打赏
  • 举报
回复
看注释


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)
{
}

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧