I'm working in C++11 and including an h file implemented in C++03. In the h file I'm including there's an enum Foo
defined. I want to declare a forward to it in code.h
and use it in code.cpp
:
header.h:
enum Foo {A=1};
code.h:
enum Foo : int; // also tried : unsigned int, long, short, unsigned short, char, unsigned char
void bar(Foo foo);
code.cpp:
#include header.h
void bar(Foo foo) { }
This is the error I get when I compile (tested g++ 4.8.5 and g++ 5.3.1):
In file included from code.cpp:2:0:
header.h:1:6: error: underlying type mismatch in enum ‘enum Foo’
enum Foo {A=1};
^
In file included from code.cpp:1:0:
code.h:3:12: error: previous definition here
enum Foo : int;
I can fix this error if I change header.h to:
enum Foo : int {A=1};
But I don't own that header and can't change it.
Aucun commentaire:
Enregistrer un commentaire