我在编译程序时,发现上述错误
在同一类上在定义函数时
定义的函数都是出现local function definitions are illegal
在其他类上定义不出现此类情况
不知道使怎么回事
在线等待,请那位告诉我,立即给分

解决方案 »

  1.   

    只要定义函数
    不管是什么
    都不合法
    就是在class wizard上直接加的,也不合法,但是在重新建一个工程,原来的复制过去都合法了,使我用的盗版vc的原因??还是某个环境的设置???
      

  2.   

    函数定义不合法,要看code才行
      

  3.   

    http://expert.csdn.net/Expert/topic/1842/1842622.xml?temp=.9849665
      

  4.   

    CMatrix CSDlg::BringMatrixb(CMatrix Matrix)
    {
    CMatrix Matrixb;
    Matrixb.SetMatrixRowAndCol(Matrix.GetMatrixRowNumber()-1);
    for(int i=1;i<Matrix.GetMatrixRowNumber();i++)
    {
    Matrixb.m_pTMatrix[i][1]=Matrix.m_pTMatrix[i][Matrix.GetMatrixColNumber()];
    } return Matrixb;}等等,这类的函数
    CMatrix 是我为矩阵定义的一个类,上面没出问题,而在别的类里面定义这个函数时
    老是说定义不合理,
      

  5.   

    //将数字字符串转化成数值
    double CMathString::stringToDigital(char *s)
    {
    double sum=0,    //转化后的数值
    temp,
    ten=0.1;     //小数变化值
    int i,ch,
    flag=0;    //标识是小数还是整数,0为整数
    for(i=0;s[i]!='\0';i++)
    {
    if(s[i]!='.')
    {
    if(flag==0)  //整数部分
    {
    ch=s[i]-'0';
    sum=sum+ch;
    sum=sum*10;
    }
    else        //小数部分
    {
    ch=s[i]-'0';
    temp=ch*ten;   //小数点移位
    sum=sum+temp;
    ten=ten*0.1;    //改变小数点位置
    }
    }
    else     //小数点
    {
    sum=sum/10;
    flag=1;
    }
    }//for
    if(flag==0)    //无小数部分
    sum=sum/10;
    return sum;}
    这个函数,过去定义可以
    现在编译又通不过了
    现在我真是晕死了
      

  6.   

    #include "stdafx.h"
    #include "MathString.h"
    #include "math.h"#define PI  3.1415926#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif这是mathstring.cpp的开头
    #if !defined(AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_)
    #define AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000#define MAX    100    //表达式最长为100个字符
    #include "Matrix.h"
    class CMathString  
    {
    public:
    int numberd;
    int numberp;
    int numberx;
    CMatrix Matrix;
    void Initial(char *str,double x);
    void Initial(char *s);
    //成员变量
    char string[MAX];     //存放算术表达式,长度为MAX=100
    double xx,             //存放积分或函数中的x
    result;            //算术表达式的值
        
    struct Bolan          //存放波兰表达式的结构
    {
    int     flag;     //标识该节点是数值、运算符还是函数,变量。
                      //0为数值,1为运算符,2为函数,3是变量。
    double  value;    //数值值
    char    oper;     //运算符 +,-,*,/,~(取反),(,)
    int     func;     //函数的编号,各函数编号及功能见开始部分
    char    pdx;   //函数的变量
    };
    Bolan bolan[MAX];     //存放转化后的波兰表达式,长度为MAX=100
        
    CMathString();
    CMathString(char *s);  //构造函数,将算术表达式*s赋给string
    CMathString(char *s,double x);   //表达式中带未知数的构造函数
                                      //算术表达式*s赋给string,未知数x赋给xx
                                      //用于积分表达式
    //成员函数
    void setX(double x);     //设置成员变量xx的值
    int checkString(void);  //检查输入的表达式是否正确,包括括号是否
                            //配对、库函数是否正确,不检查小数点、逗号
                            //是否正确
                            //若正确,将表达式中的大、中括号该成小括号
                            //并在表达式尾加‘#’标识
                            //若正确,返回值为1;否则返回0;
                            //因积分表达式中有x,所以表达式中的x作为
                            //字符处理

    int stringToMatrix(void); //将算术表达式string转化成波兰表达式,
                            //波兰表达式放在bolan[]中
    int compvalue(void);  //计算波兰表达式bolan[]的值
                          //若计算中途没有发生错误,则返回0,并将求得
                          //的波兰表达式值存入result
                          //若计算中途发生错误(如除数为0),则
    double getvalue(void);   //返回计算得到的表达式值,
                              
    //内部功能函数
    int seekStr(char *str,int &i,char *s);
       //检查字符窜str的第i个位置开始的后面字符是否与字符窜s相匹配
       //是的话将i=i+len(s),并返回1,否则返回0
    double stringToDigital(char *s);  //将数字字符串转化成数值
                                          //返回值为字符串的数值 virtual ~CMathString();
    };#endif // !defined(AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_)
    这是mathstring.h