注册 登录
编程论坛 C++教室

[求助]又是类的小问题

a8451727 发布于 2007-06-13 15:12, 592 次点击

刚学到类的修改器方法,别见笑。

我驱动后为什么答案都是1 ?可以运行,但出错了。可以直接看警告信息。
或者,应该怎样改正呢?

/*********************/

#include <iostream>
#include <string>
#include <cassert>
using namespace std;
class Name
{
public:
Name(){};
Name(string first,string middle,string last);
string getFirstName()const;
string getMiddleName()const;
string getLastName()const;
string getSignature()const;

void setFirstName(string newFirstName);
void setMiddleName(string newMiddleName);
void setLastName(string newLastName);

void print(ostream& out)const;
void read(istream& in);

private:
string myFirstName,
myLastName,
myMiddleName;
};
Name::Name(string first,string middle,string last)
{
myFirstName=first;
myLastName=last;
myMiddleName=middle;
}

inline string Name::getFirstName()const
{
return myFirstName;
}

inline string Name::getLastName()const
{
return myLastName;
}

inline string Name::getMiddleName()const
{
return myMiddleName;
}
//下面的吧?,不知道错在哪

inline void Name::setFirstName(string newFirstName)
{
myFirstName=newFirstName;
}

inline void Name::setMiddleName(string newMiddleName)
{
myMiddleName=newMiddleName;
}

inline void Name::setLastName(string newLastName)
{
myLastName=newLastName;
}

inline void Name::read(istream& in)
{
cin>>myFirstName>>myMiddleName>>myLastName;
}

inline void Name::print(ostream& out)const
{
cout<<setFirstName<<' '
<<setMiddleName<<' '
<<setLastName;//73
}

/***********************************/

#include <iostream>
#include "Name.h"
using namespace std;
void main()
{
cout <<"Enter a full name(first,middle,last): ";

Name theName;
theName.read(cin);
theName.print(cout);
cout<<"\n";
theName.setFirstName("yertle");
theName.setLastName("Turtle");
theName.print(cout);
cout<<"\n";
}
/*************************/
警告信息:
d:\学习软件\c++1\msdev98\myprojects\书本253页\name.h(73) : warning C4761: integral size mismatch in argument; conversion supplied
d:\学习软件\c++1\msdev98\myprojects\书本253页\name.h(73) : warning C4761: integral size mismatch in argument; conversion supplied
d:\学习软件\c++1\msdev98\myprojects\书本253页\name.h(73) : warning C4761: integral size mismatch in argument; conversion supplied
Linking...

5 回复
#2
Dam30002007-06-13 17:11
其实……很不好意思……我看不懂
inline void Name::read(istream& in)
{
cin>>myFirstName>>myMiddleName>>myLastName;
}

inline void Name::print(ostream& out)const
{
cout<<setFirstName<<' '
<<setMiddleName<<' '
<<setLastName;//73
}

首先不明白的是参数 然后是print的函数体……
#3
a84517272007-06-13 17:57

我也不是很明白,要不然就不会错了。

#4
HCL2007-06-13 21:32

函数到没有错啦~建议看一下
inline void Name::print(ostream& out)const
{
cout<<setFirstName<<' '
<<setMiddleName<<' '
<<setLastName;//73
}
里面所输出的内容嘛~setFirstName还是myFirstName?

#5
a84517272007-06-13 21:53

不知道错哪,运行后应该输出人名的,但却输出3个1。。。很闷。

#6
a84517272007-06-15 21:10

大家帮忙调试看下为什么驱动程序运行后结果全是1?

1