簡體   English   中英

C++ - 使用來自不同 header 文件的枚舉,相同的命名空間

[英]C++ - Use enum from different header file, same namespace

我希望能夠使用在一個文件中定義並在其他文件中使用的枚舉 class。 當我嘗試時,我只收到此錯誤: enum "Animal" has no member "Lion"

我找不到任何回答我問題的帖子。

這是我想到的一個例子:
zooanimals.h

#pragma once

namespace Zoo
{
    enum class Animal;
}

zooanimals.cpp

#include "zooanimals.h"

namespace Zoo
{
    enum class Animal
    {
        Lion,
        Elefant,
        Monkey
    };
}

zoo.h

#pragma once

namespace Zoo
{
    class Visitor;
}

zoo.cpp

#include "zoo.h"
#include "zooanimals.h"

namespace Zoo
{
    class Visitor
    {
        Animal favoriteAnimal = Animal::Lion;
    };
}

您不會在聲明和定義中拆分枚舉,所以

enum class Animal
{
    Lion,
    Elefant,
    Monkey
};

應該在 header 中,而不是在源文件中。

請記住,當您將 header 包含到源文件中時,該源文件只能“看到”在此 header 中聲明的內容。 在您的情況下,當編譯器處理 zoo.cpp 時,它無法“看到” Animal的值,因為它們不在 header 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM