大家帮忙,多谢,多谢。

ikey 2003-04-14 01:44:22
小弟刚刚学习VC++,所以试着编写类。但不知错在哪里啊?

// OUTNUM.h: interface for the OUTNUM class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_OUTNUM_H__C2E71B21_6E00_11D7_A247_0050FC000001__INCLUDED_)
#define AFX_OUTNUM_H__C2E71B21_6E00_11D7_A247_0050FC000001__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class OUTNUM
{
private:
int OUT_NUM;
public:
OUTNUM(int n);
virtual ~OUTNUM();
OUTGET(int x);
};

#endif // !defined(AFX_OUTNUM_H__C2E71B21_6E00_11D7_A247_0050FC000001__INCLUDED_)




//////////////////////////////////////////////////////////////////

// OUTNUM.cpp: implementation of the OUTNUM class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MFC1.h"
#include "OUTNUM.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

OUTNUM::OUTNUM(int n)
{
if (n > 0 & n < 3)
{OUT_NUM = 1;}
else if (n > 3 & n < 18)
{OUT_NUM = 2;}
else if (n > 18 & n < 70)
{OUT_NUM = 3;}
else if (n > 70 & n < 163)
{OUT_NUM = 4;}
else if (n > 163 & n < 293)
{OUT_NUM = 5;}
else if (n > 293 & n < 466)
{OUT_NUM = 6;}
else if (n > 466 & n < 743)
{OUT_NUM = 7;}
else if (n > 743 & n < 1137)
{OUT_NUM = 8;}
else if (n > 1137 & n < 1624)
{OUT_NUM = 9;}
else if (n > 1624 & n < 2215)
{OUT_NUM = 10;}
else if (n > 2215 & n < 2809)
{OUT_NUM = 11;}
else if (n > 2809 & n < 3471)
{OUT_NUM = 12;}
else if (n > 3471 & n < 4104)
{OUT_NUM = 13;}
else if (n > 4104 & n < 4708)
{OUT_NUM = 14;}
else if (n > 4708 & n < 5269)
{OUT_NUM = 15;}
else if (n > 5269 & n < 5747)
{OUT_NUM = 16;}
else if (n > 5747 & n < 6112)
{OUT_NUM = 17;}
else if (n > 6112 & n < 6380)
{OUT_NUM = 18;}
else if (n > 6380 & n < 6621)
{OUT_NUM = 19;}
else if (n > 6621 & n < 6805)
{OUT_NUM = 20;}
else if (n > 6805 & n < 6935)
{OUT_NUM = 21;}
else if (n > 6935 & n < 7033)
{OUT_NUM = 22;}
else if (n > 7033 & n < 7091)
{OUT_NUM = 23;}
else if (n > 7091 & n < 7139)
{OUT_NUM = 24;}
else if (n > 7139 & n < 7175)
{OUT_NUM = 25;}
else if (n > 7175 & n < 7191)
{OUT_NUM = 26;}
else if (n > 7191 & n < 7206)
{OUT_NUM = 27;}
else if (n > 7206 & n < 7216)
{OUT_NUM = 28;}
else if (n > 7216 & n < 7221)
{OUT_NUM = 29;}
else if (n > 7221 & n < 7226)
{OUT_NUM = 30;}
else
{OUT_NUM = 0;}
}
OUTNUM::OUTGET(int x)
{
x=OUT_NUM;
}
OUTNUM::~OUTNUM()
{

}

/////////////////////////////////////////////////////////////////////
OUTNUM OUTN(n);
OUTN.OUTGET(rn);
if (rn<0)
{MessageBox("<0");}
else
{MessageBox(">0");}

OUTN.~OUTNUM();
为什么不是我期待的结果啊?

...全文
82 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2003-04-14
  • 打赏
  • 举报
回复
这样写下面的这个函数:
OUTNUM::OUTGET(int& x) // 注意这里的 & 符号
{
x=OUT_NUM;
}
注意函数传递的参数类型,形参和值参是不同的。
加了&表示是引用,表示这个传递的变量数值是可以被改变得。
如果不加,表示传递的就是一个固定数值,在函数体内部改动这个数值有效,出了函数体就没有意义了。
ikey 2003-04-14
  • 打赏
  • 举报
回复
我就是不知怎么获得OUT_NUM,才 加了OUTGET(int x);这么一句,我怎么获得OUT_NUM的值呢?多谢
uhlan 2003-04-14
  • 打赏
  • 举报
回复
地址回传,
原来没有返回数值。
shilong 2003-04-14
  • 打赏
  • 举报
回复
用这句话检测数字的值就是了
CString str;
str.Format("%d",n);
AfxMessageBox(str);
把这句插到要可能有问题的地方
然后运行...
很容易清楚问题在哪的
ikey 2003-04-14
  • 打赏
  • 举报
回复
但愿可以有很大的收获,下班后我去试一下。但为什么用指针就可以呢?
搬不搬砖 2003-04-14
  • 打赏
  • 举报
回复
用指针或引用作参数就可以了.
如 up
ikey 2003-04-14
  • 打赏
  • 举报
回复
是对的阿,就算设置n=500,rn的值也是小于0的,真的搞的我糊涂。多谢再次指教
uhlan 2003-04-14
  • 打赏
  • 举报
回复
定义用OUTNUM::OUTGET(int* x)
{
*x=OUT_NUM;
}

调用用OUTN.OUTGET(&rn);

应该可以了!
uhlan 2003-04-14
  • 打赏
  • 举报
回复
你可以在OUTNUM OUTN(n);一句前设置断点;
看看n、t_text和strx对不对?!
ikey 2003-04-14
  • 打赏
  • 举报
回复
我改过来也不对阿。

CString t_text;//获得全部
CString strx;//姓氏
int n;//定位
int rn;

GetDlgItem(IDC_EDITALLTEXT)->GetWindowText(t_text);
GetDlgItem(IDC_EDITFIRST)->GetWindowText(strx);

n=t_text.Find(strx,0);
OUTNUM OUTN(n);
OUTN.OUTGET(rn);
if (rn<0)
{MessageBox("<0");}
else
{MessageBox(">0");}

OUTN.~OUTNUM();

怎么永远<0 呢?
uhlan 2003-04-14
  • 打赏
  • 举报
回复
if语句的“而且”是&&
两个&!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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