# OptionalContentMembershipDict Class

> Attaches content to one or more optional content groups.

- Product: Adobe PDF Library 21
- Language: Modern C++
- Version: 21.4.0
- HTML page: https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentMembershipDict
- Version index: https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/llms.txt

```cpp
class OptionalContentMembershipDict
```

**Namespace:** `datalogics_interface`

## Description

Attaches content to one or more optional content groups.

Form, container, and annotation objects can be associated with one or more optional content groups. By associating them with an optional content group, they become part of that 'layer', and the user can control the visibility of the content.

Note that by placing other element objects in a container, they can also be associated with an optional content group.

An OptionalContentMembershipDict connects content to the OptionalContentGroup; it contains a list of OptionalContentGroups, and rules for determining visibility when the OptionalContentGroups have conflicting on/off states in the active OptionalContentContext.

An OptionalContentMembershipDict cannot be changed once created; you must create a new OptionalContentMembershipDict and change the objects to point to it.

**Referenced by:** [`Container`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/Container.md), [`Form`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/Form.md)

**Uses types:** [`OptionalContentGroup`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentGroup.md), [`PDFArray`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/PDFArray.md), [`VisibilityPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/enum/VisibilityPolicy.md)

## Constructors

### OptionalContentMembershipDict

```cpp
datalogics_interface::OptionalContentMembershipDict::OptionalContentMembershipDict(const Document &doc, const std::vector< OptionalContentGroup > &ocgs, VisibilityPolicy vp)
```

*constructor*

**Parameters**

- `doc` ([`const Document &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/Document.md)): The document that the new OptionalContentMembershipDict will belong to.
- `ocgs` ([`const std::vector< OptionalContentGroup > &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentGroup.md)): The list of OptionalContentGroups this MembershipDict refers to.
- `vp` ([`VisibilityPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/enum/VisibilityPolicy.md)): The VisibilityPolicy of this MembershipDict.

Create a new OptionalContentMembershipDict.

### OptionalContentMembershipDict

```cpp
datalogics_interface::OptionalContentMembershipDict::OptionalContentMembershipDict(const Document &doc, const std::vector< OptionalContentGroup > &ocgs, VisibilityPolicy vp, const PDFArray &visibility_expression)
```

*constructor*

**Parameters**

- `doc` ([`const Document &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/Document.md)): The document that the new OptionalContentMembershipDict will belong to.
- `ocgs` ([`const std::vector< OptionalContentGroup > &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentGroup.md)): The list of OptionalContentGroups this MembershipDict refers to.
- `vp` ([`VisibilityPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/enum/VisibilityPolicy.md)): The VisibilityPolicy of this MembershipDict.
- `visibility_expression` ([`const PDFArray &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/PDFArray.md))

Create a new OptionalContentMembershipDict.

### OptionalContentMembershipDict

```cpp
datalogics_interface::OptionalContentMembershipDict::OptionalContentMembershipDict(OptionalContentMembershipDict &&) noexcept
```

*constructor*

**Parameters**

- (unnamed) ([`OptionalContentMembershipDict &&`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentMembershipDict.md))

### ~OptionalContentMembershipDict

```cpp
datalogics_interface::OptionalContentMembershipDict::~OptionalContentMembershipDict()
```

*destructor*

## Methods

### get_optional_content_groups

```cpp
std::vector< OptionalContentGroup > datalogics_interface::OptionalContentMembershipDict::get_optional_content_groups() const
```

**Returns:** [`std::vector< OptionalContentGroup >`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentGroup.md)

An array containing OptionalContentGroups.

Gets the list of OptionalContentGroups for this membership dictionary. This may consist of one OCG or several.

### get_visibility_expression

```cpp
std::unique_ptr< PDFArray > datalogics_interface::OptionalContentMembershipDict::get_visibility_expression() const
```

**Returns:** [`std::unique_ptr< PDFArray >`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/PDFArray.md)

A Visibility Expression array.

GetVisibilityExpression Gets the Visibility Expression for this membership dictionary.

### get_visibility_policy

```cpp
VisibilityPolicy datalogics_interface::OptionalContentMembershipDict::get_visibility_policy() const
```

**Returns:** [`VisibilityPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/enum/VisibilityPolicy.md)

A Visibility Policy.

Gets the Visbility Policy for this membership dictionary.

### operator=

```cpp
OptionalContentMembershipDict & datalogics_interface::OptionalContentMembershipDict::operator=(OptionalContentMembershipDict &&) noexcept
```

**Parameters**

- (unnamed) ([`OptionalContentMembershipDict &&`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentMembershipDict.md))

**Returns:** [`OptionalContentMembershipDict &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentMembershipDict.md)

### operator==

```cpp
bool datalogics_interface::OptionalContentMembershipDict::operator==(const OptionalContentMembershipDict &other) const
```

**Parameters**

- `other` ([`const OptionalContentMembershipDict &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentMembershipDict.md)): The OptionalContentMembershipDict to compare with.

**Returns:** `bool`

true if both objects refer to the same membership dictionary; false otherwise.

Determines whether this OptionalContentMembershipDict is equal to another.

Two OptionalContentMembershipDict objects are considered equal if they refer to the same underlying PDOCMD object.

### to_string

```cpp
std::string datalogics_interface::OptionalContentMembershipDict::to_string() const
```

**Returns:** `std::string`

A string describing this OptionalContentMembershipDict.

Returns a string representation of this OptionalContentMembershipDict.

The string includes the names of all associated OptionalContentGroups and the current VisibilityPolicy.
