导入多个模块导致构建失败 - C2664

问题描述

我正在试验 C++20 模块,但遇到了一个我不知道如何修复的错误

请参阅以下模块文件(VClipTypes.ixx):

module;

#include <vector>

export module VClipTypes;

export class Vec3
{
public:
    float x;
    float y;
    float z;
};
export class ClipVertex
{
public:
    Vec3 _point;
};


export class ClipMesh
{
public:
    std::vector<ClipVertex> _vertices;
};

和 main.cpp:

#include <iostream>
import VClipTypes;    

int main()
{

    ClipMesh m;
    m._vertices.push_back(Vec3());
    std::cout << "mesh vert count: " <<m._vertices.size()<< std::endl;
}

在这种形式下,代码编译并正常运行,输出“1”,符合预期。

但是,如果我将 Vec3 类移动到它自己的模块接口(Vector.ixx)中

module;
export module Vector;

export class Vec3
{
public:
    float x;
    float y;
    float z;
};

然后在 VClipTypes.ixx 和 main.cpp 中添加一个 import Vector; 语句,然后构建失败并出现以下错误

Error   C2664   'void std::vector<ClipVertex,std::allocator<ClipVertex>>::push_back(const _Ty &)': cannot convert argument 1 from 'Vec3' to 'const _Ty &'   

在我看来,矢量模板实例化已经发生了一些变化,但我不能确定。我确定我在某个地方做错了什么,但我看不到哪里。

你能指出我的错误吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...