c++
(gcc
最新バージョン)の奇妙な動作のように思われるものについて、誰かが助けてくれるのではないかと思います。以下は、適切なコンストラクターがないためにコンパイル時エラーが発生すると予想される場合に、正常にコンパイルされるコードです。誰が何が起こっているのか説明できますか?
#include <iostream>
using namespace std;
struct ClassA {
ClassA() {cout << "hello" << endl;}
void speak() {cout << "I am class A" << endl;}
~ClassA() {cout << "goodbye" << endl;}
};
struct ClassB {
// just an empty struct
};
int main() {
ClassA myClassA(ClassB()); // trying to construct class A from an rvalue reference to class B is ok?
return 0;
}
}
の関数を呼び出そうとするとclass A
、コンパイル時エラーが発生します。
int main() {
ClassA myClassA(ClassB());
myClassA.speak();
return 0;
}
結果:
error: request for member ‘speak’ in ‘myClassA', which is of non-class type ‘ClassA(ClassB (*)())’
ありがとう!