1

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; は未解決のシンボル エラーが発生するため機能しません)。

誰が何が起こっているのか説明できますか? それはバグですか、それともモジュールの動作に関係する何かが欠けていますか?

4

0 に答える 0