Visual Studio 2015 で C++ の実験的モジュールを試し始めたところ、インライン初期化を使用した場合に、モジュールでエクスポートされたクラスと「通常の」クラスの動作に違いがあることがわかりました。
module FooMod;
export class Foo
{
int m_num = 34;
public:
int getNum() const
{
return m_num;
}
};
私の消費コード:
#include <iostream>
class Bar
{
int m_num = 56;
public:
int getNum() const
{
return m_num;
}
};
import FooMod;
int main()
{
Foo foo;
std::cout << "foo num = " << foo.getNum() << std::endl;
Bar bar;
std::cout << "bar num = " << bar.getNum() << std::endl;
return 0;
}
出力:
foo num = 12125207 or some other random number.
bar num = 56
Foo ie Foo(){} に空のコンストラクターを指定すると、上記のコードは期待どおりに機能し、foo num = 34 が返されます (ちなみに、Foo() = default; は未解決のシンボル エラーが発生するため機能しません)。
誰が何が起こっているのか説明できますか? それはバグですか、それともモジュールの動作に関係する何かが欠けていますか?