回答編集履歴

1

追記

2021/07/03 10:01

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -20,4 +20,39 @@
20
20
  foo f; f = b; // ここで型変換。
21
21
  f.print();
22
22
  }
23
+ ```
24
+
25
+ [追記」相互変換? できますとも。
26
+ ```C++
27
+ #include <iostream>
28
+
29
+ class bar;
30
+
31
+ class foo {
32
+ public:
33
+ int n;
34
+ foo(int v=0) : n(v) {}
35
+ void print() { std::cout << "foo(" << n << ")\n"; }
36
+ operator bar();
37
+ };
38
+
39
+ class bar {
40
+ public:
41
+ bar(int v=0) : n(v) {}
42
+ int n;
43
+ void print() { std::cout << "bar(" << n << ")\n"; }
44
+ operator foo();
45
+ };
46
+
47
+ bar::operator foo() { foo tmp; tmp.n = n; return tmp; }
48
+ foo::operator bar() { bar tmp; tmp.n = n; return tmp; }
49
+
50
+ int main() {
51
+ foo f0(123);
52
+ foo f1;
53
+ bar b0(456);
54
+ bar b1;
55
+ f1 = b0; f1.print();
56
+ b1 = f0; b1.print();
57
+ }
23
58
  ```