---
description: "Learn more about: case (C++)"
title: "case (C++ COM Attribute)"
ms.date: "10/02/2018"
f1_keywords: ["vc-attr.case"]
helpviewer_keywords: ["case attribute"]
ms.assetid: 6fb883c3-0526-4932-a901-b4564dcaeb7d
---
# case (C++)
Used with the [switch_type](switch-type.md) attribute in a **`union`**.
## Syntax
```cpp
[ case(value) ]
```
#### Parameters
*value*
A possible input value for which you want to provide processing. The type of **value** can be one of the following types:
- **`int`**
- **`char`**
- `boolean`
- **`enum`**
or an identifier of such a type.
## Remarks
The **case** C++ attribute has the same functionality as the **case** MIDL attribute. This attribute is only used with the [switch_type](switch-type.md) attribute.
## Example
The following code shows a use of the **case** attribute:
```cpp
// cpp_attr_ref_case.cpp
// compile with: /LD
#include
[export]
struct SizedValue2 {
[switch_type(char), switch_is(kind)] union {
[case(1), string]
wchar_t* wval;
[default, string]
char* val;
};
char kind;
};
[module(name="ATLFIRELib")];
```
## Requirements
| Attribute context | Value |
|-|-|
|**Applies to**|Member of a **`class`** or **`struct`**|
|**Repeatable**|No|
|**Required attributes**|None|
|**Invalid attributes**|None|
For more information about the attribute contexts, see [Attribute Contexts](cpp-attributes-com-net.md#contexts).
## See also
[IDL Attributes](idl-attributes.md)
[Typedef, Enum, Union, and Struct Attributes](typedef-enum-union-and-struct-attributes.md)
[Class Attributes](class-attributes.md)