标题:C++类的定义问题。。。。
取消只看楼主
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
已结贴  问题点数:20 回复次数:4 
C++类的定义问题。。。。
我听说类一般声明在.h文件中。定义在cpp文件中。于是我写了这样一个类和这样一个头文件
但是编译的时候说cpp文件内有语法错误。。。我不是很懂C++语法,大家帮我看一下这两个文件哪里的语法错了

===================错误内容========================
In file included from digclass.cpp:6:0:
digclass.h:17:31: 错误:为构造函数指定返回值无效
digclass.cpp:78:6: 错误:‘ShowDig’未声明
digclass.cpp: 在函数‘void DigClass(int)’中:
digclass.cpp:83:17: 错误:‘up’在此作用域中尚未声明
digclass.cpp:86:17: 错误:‘middle’在此作用域中尚未声明
digclass.cpp:97:17: 错误:‘down’在此作用域中尚未声明
digclass.h:17:31: 错误:为构造函数指定返回值无效

==============================cpp文件===================================
程序代码:
/*

 *Filename:      digclass.cpp

 *Created:      2011年09月29日 21时19分53秒

 *Author:      thlgood

 */
#include "digclass.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

DigClass::DigClass(const char Num)
{

#ifdef _DEBUG_
    cout << "please input num without other character\n";
    exit (1);
#endif
    switch (Num)
    {
        case '0':
            strcpy(up, " _ ");
            strcpy(middle, "| |");
            strcpy(down, "|_|");
            break;
        case '1':
            strcpy(up, "   ");
            strcpy(middle, "  |");
            strcpy(down, "  |");
            break;
        case '2':
            strcpy(up, " _ ");
            strcpy(middle , " _|");
            strcpy(down, "|_ ");
            break;
        case '3':
            strcpy(up, " _ ");
            strcpy(middle," _|");
            strcpy(down, " _|");
            break;

        case '4':
            strcpy(up, "   ");
            strcpy(middle, "|_|");
            strcpy(down, "  |");
            break;
        case '5':
            strcpy(up, " _ ");
            strcpy(middle, "|_ ");
            strcpy(down, " _|");
            break;
        case '6':
            strcpy(up, " _ ");
            strcpy(middle, "|_ ");
            strcpy(down, "|_|");
            break;

        case '7':
            strcpy(up, " _ ");
            strcpy(middle, "  |");
            strcpy(down, "  |");
            break;
        
        case '8':
            strcpy(up, " _ ");
            strcpy(middle, "|_|");
            strcpy(down, "|_|");
            break;

        case '9':
            strcpy(up, " _ ");
            strcpy(middle, "|_|");
            strcpy(down, " _|");
            break;  
    }
}


void ShowDig::DigClass(const int n)
{
    switch(n)
    {
        case 1:
            printf("%s", up);
            break;
        case 2:
            printf("%s", middle);
            break;
#ifdef _DEBUG_
        case 3:
            printf("%s", down);
            break;
        default:
            printf("Error, Not UP, Not Middle, NOT DOWN!!\n");
            exit(2);
#else
        default:
            printf("%s", down);
#endif
    }
}

======================END================
=========================头文件=================================
程序代码:
/*

 *       Filename:  DigClass.h

 *    Description:  Nothing

 *        Created:  2011年09月29日 21时16分40秒

 *         Author:  thlgood, 

 */
#ifndef _DITCLASS_H_
#define _DIGCLASS_H_

class DigClass
{
    private:
        char up[4];
        char middle[4];
        char down[4];
    public:
        void DigClass(const char Num);
        void ShowDig(const int n);
};

#endif

=====================END=======================
============================说明=============================
我之前是学C语言的,目前是C++初学者。
所以代码的风格明显和C比较接近。。不过不碍事的。只是帮我改一下语法错误就好了。
我的平台是GNU/Linux Gcc


谢谢各位
搜索更多相关主题的帖子: included 声明 
2011-09-30 00:43
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
我改了,还是有错啊

o(∩∩)Linux & Python 群:187367181
2011-09-30 13:51
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
已经改对了

o(∩∩)Linux & Python 群:187367181
2011-09-30 13:57
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
感谢各位的回答,问题我已经解决了。

我把改好的代码贴上来吧:

============================digclass.cpp=======================
程序代码:
/*

 *Filename:      digclass.cpp

 *Created:      2011年09月29日 21时19分53秒

 *Author:      thlgood

 */
#include "digclass.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void DigClass::SetDig(const char Num)
{

#ifdef _DEBUG_
    cout << "please input num without other character\n";
    exit (1);
#endif
    switch (Num)
    {
        *************省略*****************
    }
}


void DigClass::ShowDig(const int n)
{
    switch(n)
    {
        case 1:
            printf("%s", up);
            break;
        case 2:
            printf("%s", middle);
            break;
#ifdef _DEBUG_
        case 3:
            printf("%s", down);
            break;
        default:
            printf("Error, Not UP, Not Middle, NOT DOWN!!\n");
            exit(2);
#else
        default:
            printf("%s", down);
#endif
    }
}

o(∩∩)Linux & Python 群:187367181
2011-09-30 15:41
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
其实我是在学svn。。只不过顺便学C++一下啦。。。

o(∩∩)Linux & Python 群:187367181
2011-09-30 15:41



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




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

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