Где объявить Enum - PullRequest
       3

Где объявить Enum

2 голосов
/ 13 июня 2019

Мне нужно использовать enum WrapMode в двух разных классах. что является лучшим подходом.

1) Объявите enum в пространстве имен в заголовочном файле и включите в оба класса

2) локально объявить пространство имен в обоих классах отдельно.

enum TextureWrapMode {  Repeat = 0, Clamp = 1};

class My_Texture
 {

 };

/////////////////////////////////////////////// ////////////////////////

class Texture
{

 };

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

Поскольку вы отметили свой вопрос c ++ 11: не используйте enum, используйте enum class.Проблема с пространством имен (и не только) решена!Если я не могу использовать C ++ 11 по какой-либо причине, я не вижу никакой причины для использования enum s.

Кроме этого, я бы поместил его в заголовочный файл, если ониспользуется более чем одним модулем.

1 голос
/ 13 июня 2019

Если вы разрабатываете большой проект или у вас много файлов, в которых будет использоваться этот конкретный enum, то лучше поместить в него этот enum или, я бы сказал, все общие вещи, такие как общая структура.h файл и укажите, где вы хотите.

И если у вас есть один код файла, который вы должны объявить в enum сразу после объявленных вами заголовков.

#include <iostream> 
using namespace std;

enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3
} card;

int main() 
{
    card = club;
    cout << "Size of enum variable " << sizeof(card) << " bytes.";   
    return 0;
}

НАДЕЖДА, ЭТО ПОМОГАЕТ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...