小弟刚刚学习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 > 1000class 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();
为什么不是我期待的结果啊?

解决方案 »

  1.   

    if语句的“而且”是&&
    两个&!
      

  2.   

    我改过来也不对阿。 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 呢?
      

  3.   

    你可以在OUTNUM OUTN(n);一句前设置断点;
    看看n、t_text和strx对不对?!
      

  4.   

    定义用OUTNUM::OUTGET(int* x)
    {
      *x=OUT_NUM;
    }调用用OUTN.OUTGET(&rn); 应该可以了!
      

  5.   

    是对的阿,就算设置n=500,rn的值也是小于0的,真的搞的我糊涂。多谢再次指教
      

  6.   

    用这句话检测数字的值就是了
    CString str;
    str.Format("%d",n);
    AfxMessageBox(str);
    把这句插到要可能有问题的地方
    然后运行...
    很容易清楚问题在哪的
      

  7.   

    我就是不知怎么获得OUT_NUM,才 加了OUTGET(int x);这么一句,我怎么获得OUT_NUM的值呢?多谢
      

  8.   

    这样写下面的这个函数:
    OUTNUM::OUTGET(int& x) // 注意这里的 & 符号
    {
       x=OUT_NUM;
    }
    注意函数传递的参数类型,形参和值参是不同的。
    加了&表示是引用,表示这个传递的变量数值是可以被改变得。
    如果不加,表示传递的就是一个固定数值,在函数体内部改动这个数值有效,出了函数体就没有意义了。