0

当我尝试从 .cpp 文件调用 .h 文件中的枚举 UDT Month 时,编译器给了我一个错误。我可以在另一个文件中使用我的枚举 UDT 吗?如果有怎么办?

我的日期.h

class Date 
{

public:

    enum Month
        {
        jan = 1, 
        feb, 
        mar, 
        apr, 
        may, 
        jun, 
        jul, 
        aug, 
        sep, 
        oct, 
        nov, 
        dec
        };

    Month int_to_month(int x);

    Date(int y, Month m, int d);

    Month month () const;

...other code


};

编译器突出显示以下对 Month 的引用和 date.cpp 文件中的函数名称的错误

#include "lib.h"
#include "date.h"

Month Date::month () const  
    {
    return m;
    }

Month Date::int_to_month(int x)
    {
    return m;
    }
4

2 回答 2

0

的类型Month应该是Date::Month,因为enum是类的成员。如果您希望它是直Month的,请在文件范围内声明它。

于 2013-11-11T23:12:02.753 回答
0

您需要指定 Month 的来源,如下所示:

Date::Month Date::month () const { /* ... */ }
Date::Month Date::int_to_month(int x) { /* ... */ }

否则编译器不知道 Month 是什么,它会在全局范围内寻找具有该名称的东西。

于 2013-11-11T23:12:41.093 回答