こういうことでしょうか?
C++
1#include <iostream>
2#include <vector>
3
4#include "header.hpp"
5
6void Bun::subtract_at(int index, int diff) {
7 nums_.at(index) -= diff;
8}
9void Bun::print(void) {
10 for(auto num: nums_) {
11 std::cout << num << " ";
12 }
13 std::cout << std::endl;
14}
15
16int main(void) {
17 Bun bun{1.5, 2.5, 3.5, 4.5};
18
19 bun.print();
20 bun.subtract_at(3);
21 bun.print();
22
23 return 0;
24}
実行結果 Wandbox
1.5 2.5 3.5 4.5
1.5 2.5 3.5 1.5
erase(num[3])と書くと num[3] は 2.5 になってるというような感じ
目的の変数を参照渡しする方法も無いことは無いですが、
参照渡しをむやみに使うよりインデックスで指定した方が無難だと思います。
メンバ変数へのアクセスも狭められますし。
追記
どうやらこういうことみたいですね。
C++
1void subtract(double& num, double diff=3) {
2 num -= diff;
3}
4
5int main(void) {
6 Bun bun{1.5, 2.5, 3.5, 4.5};
7 auto& nums = bun.getNums();
8
9 bun.print();
10 subtract(nums[3]);
11 bun.print();
12
13 return 0;
14}
実行結果 Wandbox
1.5 2.5 3.5 4.5
1.5 2.5 3.5 1.5
でもこれ、正直悪手だと思います。
せっかくクラスにvectorを閉じ込めたのに、外部からいくらでも操作出来てしまうので。
この方法を選ぶしかない状況ってあるんでしょうか。ちょっと考えなおした方が良いような。