标题:在一个类中怎么在成员函数中设置成员变量的数值
只看楼主
柚夏怪
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-9-7
结帖率:25%
已结贴  问题点数:5 回复次数:3 
在一个类中怎么在成员函数中设置成员变量的数值
怎么在成员函数SetInfor中设置成员变量的数值
class CStudent

{

  char name;

  char sex;

  int grade;

  int classe;

public:

  CStudent(){}

  int Setlnfor();

  int Showlnfor();

};

int CStudent::Setlbnfor()

{

  CStudent::name = yuan;

  CStudent::sex = nv;

  CStudent::classe= 5;

  return 0;

}

int CStudent::Showlnfor()

{

  std::cout<<CStudent.name<<std::endl<<CStudent.sex<<std::endl;<<CStudent::classe<<std::endl;

}

int main()

{

  CStudent c1(yuan,nv,5);

  c1.Showlnfor();

  return 0;

}

=====运行开始======
:14: 错误:程序中有游离的‘\357’
:14: 错误:程序中有游离的‘\274’
:14: 错误:程序中有游离的‘\233’
:15: 错误:程序中有游离的‘\357’
:15: 错误:程序中有游离的‘\274’
:15: 错误:程序中有游离的‘\233’
:12: 错误:成员函数‘int CStudent::Setlbnfor()’未在类‘CStudent’中声明
: In member function ‘int CStudent::Showlnfor()’:
:21: 错误:‘cout’不是‘std’的成员
:21: 错误:expected primary-expression before ‘.’ token
:21: 错误:‘endl’不是‘std’的成员
:21: 错误:expected primary-expression before ‘.’ token
:21: 错误:‘endl’不是‘std’的成员
:21: 错误:expected primary-expression before ‘<<’ token
:21: 错误:‘endl’不是‘std’的成员
: In function ‘int main()’:
:25: 错误:‘yuan’在此作用域中尚未声明
:25: 错误:‘nv’在此作用域中尚未声明

=====运行结束======


搜索更多相关主题的帖子: public return 
2016-10-30 14:59
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:2 
错误提示都给你说得很明白了,你的函数名多写了一个b
2016-10-30 21:35
鸿蒙之灵
Rank: 4
来 自:异次元裂缝
等 级:贵宾
威 望:11
帖 子:126
专家分:244
注 册:2016-8-22
得分:2 
先来分析你代码中的错误:错误太多,终究还是你自己不够仔细,出现的问题都是很基础的问题,逻辑上,对类的对象的初始化你需要认真理解

程序代码:
class CStudent
{
  char name;       //这里的char型是不是有些不合理,从你后面的代码分析,你的name并不是一个字符
  char sex;        //这里也是,同上,建议改为string型
  int grade;
  int classe;
public:
  CStudent(){}             //构造函数无参数列表,在看看你后面创建类的对象的方法
  int Setlnfor();          //从后面的代码看,并没有需要传递的值,建议改为void
  int Showlnfor();         //从后面的代码看,并没有需要传递的值,建议改为void
};
int CStudent::Setlbnfor()         //  Setlbnfor()  检查一下,是不是多了一个字母b,应该是Setlnfor(),函数类型改为void
{
  CStudent::name = yuan;         // 你的定义是char型,为什么不用单引号?如果改为string,应该用双引号,另外,你的分号是中文格式
  CStudent::sex = nv;            // 你的定义是char型,为什么不用单引号?如果改为string,应该用双引号,另外,你的分号是中文格式
  CStudent::classe= 5;
  return 0;                        //函数类型该为void后,不要这一行,注释掉
}
int CStudent::Showlnfor()
{
  std::cout<<CStudent.name<<std::endl<<CStudent.sex<<std::endl;<<CStudent::classe<<std::endl;      //这样写太麻烦,在文件顶部包含std命名空间就可以了,另外,你看一下,你倒数第二个 endl 后面是不是多了一个分号
}
int main()
{
  CStudent c1(yuan,nv,5);           // 参数列表,首先,最直观的,你的参数格式就不对,char型的单引号呢?另外,这里是新建一个类的对象,改为 CStudent c1;  就可以了
  c1.Showlnfor();           //上面不改,这一句绝对编译不能通过,再者,Setlbnfor()函数不调用,会出现输出访问错误,把其他内容输出,虽然不报错
  return 0;
}






程序代码:
// luntan.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
#include<string>            //定义了string型变量,需要包含该头文件
using namespace std;

class CStudent

{

  string name;

  string sex;

  int grade;

  int classe;

public:

  CStudent(){}         //注意理解构造函数

  void Setlnfor();

  void Showlnfor();

};

void CStudent::Setlnfor()

{

  CStudent::name = "yuan";

  CStudent::sex = "nv";

  CStudent::classe= 5;
}

void CStudent::Showlnfor()

{

    cout<<CStudent::name<<endl<<CStudent::sex<<endl<<CStudent::classe<<endl;         //中间不需要分号

}

int main()

{

  CStudent c1;          //创建类的对象,联系类的构造函数,理解,你之前的写法是创建并初始化,而初始化的工作你在类的定义中已经有了,这里不需要,并且你的构造函数并没有参数列表
  c1.Setlnfor();       //必须调用,否则你的对象没有初始化,会出现不应该输出的内容被输出
  c1.Showlnfor();

  return 0;

}


[此贴子已经被作者于2016-10-31 14:08编辑过]


对待编程,要像对待情人一样
2016-10-31 13:58
柚夏怪
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-9-7
得分:0 
回复 3楼 鸿蒙之灵
好的谢谢我会注意的
2016-11-13 06:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470473-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.131887 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved