为什么在c ++模块中导出时,类成员内联初始化不起作用?

时间:2017-06-02 10:18:34

标签: visual-c++-2015 c++-modules

我刚刚开始使用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提供一个空构造函数,即Foo(){},那么上面的代码按预期工作,我得到foo num = 34.(顺便提一下Foo()= default;不起作用,因为我得到未解决的符号错误。 )

有谁可以解释发生了什么?这是一个错误还是我错过了与模块工作方式有关的事情?

0 个答案:

没有答案