编译器找不到枚举中的成员,枚举在单独的头文件中声明,并在源文件中定义

Pet*_*ner 0 c++ enums

我对编程非常陌生,正在使用 C++。

在我的头文件:Globals.h 中,我声明了我的枚举“Colour”和一个用于测试它的函数。

在我的源文件 Globals.cpp 中,我定义了枚举和测试函数。

在 main 中,我调用该函数,但收到以下消息:

错误 C2027:使用未定义的类型“颜色”

错误 C2065:“COLOUR_BLACK”:未声明的标识符。

我的代码如下:

Globals.h

#ifndef GlOBALS_H
#define GLOBALS_H

enum class Colour;
void print_Colour(Colour whatColour);

#endif 
Run Code Online (Sandbox Code Playgroud)

和:

Globals.cpp

#include <iostream>
#include "Globals.h"


enum class Colour
{
    COLOUR_BLACK,
    COLOUR_BROWN,
    COLOUR_BLUE,
    COLOUR_GREEN,
    COLOUR_RED,
    COLOUR_YELLOW
};

void print_Colour(Colour whatColour)
{
    switch (whatColour)
    {
    case Colour::COLOUR_BLACK:
        std::cout << "Black" << "\n";
        break;
    case Colour::COLOUR_BROWN:
        std::cout << "Brown" << "\n";
        break;
    case Colour::COLOUR_BLUE:
        std::cout << "Blue" << "\n";
        break;
    case Colour::COLOUR_GREEN:
        std::cout << "Green" << "\n";
        break;
    case Colour::COLOUR_RED:
        std::cout << "Red" << "\n";
        break;
    case Colour::COLOUR_YELLOW:
        std::cout << "Yellow" << "\n";
        break;
    default:
        std::cout << "Who knows!" << "\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

Source.cpp

#include <iostream>
#include "Globals.h"

using namespace std;

int main()
{
    Colour paint = Colour::COLOUR_BLACK; 
    print_Colour(paint);
    std::cin.get();
    std::cin.get();
    return 0;
};
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

Jon*_*ter 5

Source.cpp只看到前向声明。您应该将实际内容移至enum头文件中。