hiero-ledger / hiero-ledger/hiero-sdk-cpp

[Good First Issue]: Move orphaned `operator==` Doxygen block to the public declaration in `FeeComponents.h`

Open Beginner friendly
#1,613 13 comments 0 reactions 0 assignees View on GitHub
priority: low scope: docs skill: good first issue status: ready for dev
Dominant language
C++
Stars
42
Forks
108
Avg merge
11h 45m
Merged PRs (30d)
2

Description

### 🆕🐥 First-Time Friendly

This issue is especially welcoming for people who are new to contributing to the **Hiero C++ SDK**.

We know that opening your first pull request can feel like a big step. Issues labeled **Good First Issue** are designed to make that experience easier, clearer, and more comfortable.

No prior knowledge of Hiero, Hedera, or distributed ledger technology is required - just a basic familiarity with C++ and Git is more than enough to get started.

> [!IMPORTANT]
> ### 📋 About Good First Issues
>
> Good First Issues are designed to make getting started as smooth and stress-free as possible.
>
> They usually focus on:
> - Small, clearly scoped changes
> - Straightforward updates to existing code or docs
> - Simple refactors or clarity improvements
>
> Other kinds of contributions — like larger features, deeper technical changes, or design-focused work — are just as valuable and often use the beginner, intermediate, or advanced labels.

### 👾 Description of the Task

In `src/sdk/main/include/FeeComponents.h`, the `operator==` declaration at line 271 has no Doxygen comment, while a Doxygen block at lines 329–334 sits orphaned at the bottom of the class — it describes `operator==` but no declaration follows it.

This artifact was introduced when PR #1516 converted `friend operator==` to a member function. The friend declaration originally lived at the bottom of the class with the docstring directly above it; when the declaration moved up to the public section, the comment was left behind.

PR #1516 review thread:

> Maintainer: *"the public declaration has no documentation and the doc comment at lines 329–334 is now orphaned with nothing to describe… Not blocking — I'll open a follow-up issue to track moving the doc comment up to the public declaration and removing the orphaned block."*

Verified at the v0.55.0 release commit: line 271 is undocumented; lines 329–334 still hold an orphaned `/** ... */` block immediately before the closing `};`.

Relevant files:

```
src/sdk/main/include/FeeComponents.h
```

### 💡 Proposed Solution

Move the existing orphaned Doxygen block to immediately above the `operator==` declaration at line 271, then delete the orphaned block from its current location.

Concretely, the file should go from:

```cpp
// line 271
[[nodiscard]] bool operator==(const FeeComponents& rhs) const;
// ...
// lines 329–334
/**
* Compare two FeeComponents instances and determine if they are equal.
* @param rhs The other FeeComponents with which to compare this FeeComponents.
* @return true if equal, false otherwise.
*/
};
```

to:

```cpp
// line 271 (with new comment immediately above)
/**
* Compare two FeeComponents instances and determine if they are equal.
* @param rhs The other FeeComponents with which to compare this FeeComponents.
* @return true if equal, false otherwise.
*/
[[nodiscard]] bool operator==(const FeeComponents& rhs) const;
// ...
}; // <- closing brace, no orphan above it
```

Match the exact wording, capitalization, and `\c TRUE` / backtick style of recently-added equality operators on neighboring SDK types (e.g. `HbarAllowance::operator==`, `NetworkVersionInfo::operator==`) if there is a discrepancy. The convention is to write the comment in the form `Compare this to another and determine if they represent the same...`.

### 👩‍💻 Implementation Steps

- [ ] Open [src/sdk/main/include/FeeComponents.h](../../src/sdk/main/include/FeeComponents.h).
- [ ] Confirm the orphaned Doxygen block at the bottom of the class (around lines 329–334) and the undocumented `operator==` declaration (around line 271).
- [ ] Move the Doxygen block to sit immediately above the `operator==` declaration. Adjust wording slightly if needed to match the project's Doxygen style for equality operators (peek at `HbarAllowance.h` or `NetworkVersionInfo.h` for reference).
- [ ] Delete the now-empty location at the bottom of the class.
- [ ] Run `clang-format-17 -i src/sdk/main/include/FeeComponents.h` to confirm formatting is clean.
- [ ] Build the project to confirm no header changes were required elsewhere: `cmake --build --preset linux-x64-debug`.

### ✅ Acceptance Criteria

- [ ] **Scope:** Changes are limited to `src/sdk/main/include/FeeComponents.h`.
- [ ] **Behavior:** No code change — header-comment relocation only.
- [ ] **Style:** The relocated Doxygen block matches the convention used by other SDK equality operators.
- [ ] **Build:** Project still builds cleanly.

---

### 📋 Step-by-Step Contribution Guide

To help keep contributions consistent and easy to review, we recommend following these steps:

- [ ] Comment `/assign` to request the issue
- [ ] Wait for assignment
- [ ] Fork the repository and create a branch
- [ ] Set up the project using the instructions in `README.md`
- [ ] Make the requested changes
- [ ] Sign each commit using `-s -S`
- [ ] Push your branch and open a pull request

Read [Workflow Guide](https://github.com/hiero-ledger/hiero-sdk-cpp/blob/main/docs/training/workflow.md) for step-by-step workflow guidance.
Read [README.md](https://github.com/hiero-ledger/hiero-sdk-cpp/blob/main/README.md) for setup instructions.

❗ Pull requests **cannot be merged** without `S` and `s` signed commits.
See the [Signing Guide](https://github.com/hiero-ledger/hiero-sdk-cpp/blob/main/docs/training/signing.md).

### 🤔 Additional Information

- Originating PR: [#1516](https://github.com/hiero-ledger/hiero-sdk-cpp/pull/1516).
- This is a single-file, comment-only change — a great first PR for someone learning the workflow.

If you have questions while working on this issue, feel free to ask! [Hiero-SDK-C++ Discord](https://discord.com/channels/905194001349627914/1337424839761465364)

Contributor guide

Open the contributing guide

Research direction

Open src/sdk/main/include/FeeComponents.h and inspect the operator== declaration and orphaned Doxygen block near the bottom of the class. Compare equality-operator documentation in HbarAllowance.h or NetworkVersionInfo.h, then run clang-format-17 -i on the header and cmake --build --preset linux-x64-debug. Done means only FeeComponents.h changes, the comment sits above operator==, and the build succeeds.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
documentation
Issue type
Documentation
Difficulty
1/5
Estimated time
Under an hour
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
92/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.