次の例では本当に混乱しています。
#include <iostream>
class C {
public:
int a,b;
};
int main() {
C c{3,6};
std::cout<<c.a<<'\n';
std::cout<<c.b<<'\n';
return 0;
}
それはうまく機能し、期待される結果をもたらします。しかし、上記のコードを以下のように変更すると。
#include <iostream>
class C {
int a,b;
public:
int get_a(){
return a;
}
int get_b(){
return b;
}
};
int main(){
C c{3,6};
std::cout<<c.get_a()<<'\n';
std::cout<<c.get_b()<<'\n';
return 0;
}
上記のプログラムでは、コンパイラで複数のエラーが表示されます。最初のプログラムでは均一な初期化が許可されているのに、2番目のプログラムでは許可されていないのはなぜですか? どこが間違っていますか?