我刚刚开始使用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;不起作用,因为我得到未解决的符号错误。 )
有谁可以解释发生了什么?这是一个错误还是我错过了与模块工作方式有关的事情?