mirror of
https://github.com/nlohmann/json.git
synced 2026-10-07 01:15:20 +00:00
92 lines
2.2 KiB
Markdown
92 lines
2.2 KiB
Markdown
# nlohmann::basic_json::as_base_class
|
|
|
|
```
|
|
json_base_class_t& as_base_class() noexcept;
|
|
const json_base_class_t& as_base_class() const noexcept;
|
|
```
|
|
|
|
Returns a reference to this object as its custom base class [`json_base_class_t`](https://json.nlohmann.me/api/basic_json/json_base_class_t/index.md). No copy is made.
|
|
|
|
Since `basic_json` derives from `json_base_class_t`, a member of `basic_json` hides any member of the custom base class with the same name. This function makes such hidden members accessible again.
|
|
|
|
## Return value
|
|
|
|
reference to this object as [`json_base_class_t`](https://json.nlohmann.me/api/basic_json/json_base_class_t/index.md)
|
|
|
|
## Exception safety
|
|
|
|
No-throw guarantee: this function never throws exceptions.
|
|
|
|
## Complexity
|
|
|
|
Constant.
|
|
|
|
## Notes
|
|
|
|
The function is equivalent to `static_cast<json_base_class_t&>(j)` (or `static_cast<const json_base_class_t&>(j)`).
|
|
|
|
## Examples
|
|
|
|
Example
|
|
|
|
The example shows how to use `as_base_class` to access members of the custom base class that are hidden by members of `basic_json`.
|
|
|
|
```
|
|
#include <iostream>
|
|
#include <nlohmann/json.hpp>
|
|
|
|
class base_class_with_hidden_members
|
|
{
|
|
public:
|
|
const char* type_name() const noexcept
|
|
{
|
|
return "my_type_name";
|
|
}
|
|
|
|
std::size_t size() const noexcept
|
|
{
|
|
return 42;
|
|
}
|
|
};
|
|
|
|
using json = nlohmann::basic_json <
|
|
std::map,
|
|
std::vector,
|
|
std::string,
|
|
bool,
|
|
std::int64_t,
|
|
std::uint64_t,
|
|
double,
|
|
std::allocator,
|
|
nlohmann::adl_serializer,
|
|
std::vector<std::uint8_t>,
|
|
base_class_with_hidden_members
|
|
>;
|
|
|
|
int main()
|
|
{
|
|
json j = {1, 2, 3};
|
|
|
|
// the members of basic_json hide the members of the base class
|
|
std::cout << j.type_name() << ' ' << j.size() << '\n';
|
|
|
|
// access the hidden members of the base class
|
|
std::cout << j.as_base_class().type_name() << ' ' << j.as_base_class().size() << '\n';
|
|
}
|
|
```
|
|
|
|
Output:
|
|
|
|
```
|
|
array 3
|
|
my_type_name 42
|
|
```
|
|
|
|
## See also
|
|
|
|
- [json_base_class_t](https://json.nlohmann.me/api/basic_json/json_base_class_t/index.md) - type of the custom base class
|
|
|
|
## Version history
|
|
|
|
- Added in version 3.13.0 unreleased.
|