Namespaces
Variants

C++ keyword: struct

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

Uso

(desde C++11)
  • Si una función o una variable existe en el ámbito con el nombre idéntico al nombre de un tipo de clase no unión, struct puede anteponerse al nombre para eliminar ambigüedad, resultando en un especificador de tipo elaborado .

Ejemplo

struct Foo; // declaración anticipada de una estructura
struct Bar  // definición de una estructura
{
    Bar(int i) : i(i + i) {}
    int i;
};
enum struct Pub // enumeración con ámbito, desde C++11
{
    b, d, p, q,
};
int main()
{
    Bar Bar(1);
    struct Bar Bar2(2); // tipo elaborado
}

Véase también

(desde C++11)