我在编写的一些基于模块的 C++ 代码中遇到“基类未定义”错误。我已将其简化为以下 MCVE。非模块等效项可以很好地编译。我不明白为什么这里的模块化代码会失败。请有人解释一下为什么我会收到错误,以及如果可能的话如何修复它。
这是模块接口单元 -
// mcve.ixx
export module mcve;
export class X
{
friend class F; // (1)
};
export
template<typename T>
class A
{
};
export class B: public A<X>
{
};
// (2)
export class F: public B
{
};
Run Code Online (Sandbox Code Playgroud)
以及显示报告编译器错误的位置的 cpp 文件。
// main.cpp
import mcve;
int main()
{
// X x; // (3)
// A<X> ax; // (4)
// F f; // (5)
B b; // error C2504: 'B': base class undefined
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,删除 …