-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
InputModulesのBuilder #195
Comments
はじめの...に |
そもそも変更後はこのように使用することが目的です ( #192 ) InputModules input_modules = InputModules::builder()
.joy_pins(A4, A5)
.volume_pin(A6)
.mpu_sda_pin(D4)
.mpu_scl_pin(D5)
.build();
// こう書いても同じ
InputModules::Builder builder = InputModules::builder();
builder.joy_pins(A4, A5);
builder.volume_pin(A6);
builder.mpu_sda_pin(D4);
builder.scl_pin(D5);
InputModules input = builder.build();
class Builder {
private:
PinName _volume_pin;
...
public:
auto volume_pin(PinName pin) -> Builder&;
...
};
擬似コードのコメントにも書きましたが、 InputModules(
const std::pair<PinName, PinName>& joy_pins,
const PinName& volume_pin,
const std::pair<PinName, PinName>& mpu_pins,
); あとこれは擬似コードが悪いんですが、 2つめの...にはそれ以外で既存のメソッドたちが入るはずです。 omniboat_robokit/include/device/input.hpp Lines 43 to 61 in 46c1b3c
はい、それに加えて |
擬似コード書き直し class InputModules {
public:
class Builder {
private:
PinName _volume_pin;
// 他のピンも書く
public:
auto volume_pin(const PinName& pin) -> Builder&;
// その他setterも
auto build() -> InputModules;
};
private:
// あってもなくてもいい
InputModules(
const std::pair<PinName, PinName>& joy_pins,
const PinName& volume_pin,
const std::pair<PinName, PinName>& mpu_pins
);
public:
static auto builder() -> Builder;
// InputModulesをBuilder以外の方法で構築できないようにする
// すなわち、publicなコンストラクタはこれだけ
InputModules(Builder builder);
// 元々あったメソッドたち
}; |
丁寧な解説ありがとうございます。 |
omniboat_robokit/include/device/input.hpp
Lines 33 to 41 in 2d3b5b3
omniboat_robokit/src/device/input.cpp
Lines 13 to 20 in 2d3b5b3
この部分を↓にしたい
クラスを入れ子にするあたりが怪しいかも?要調査
The text was updated successfully, but these errors were encountered: