我正在编写一个库,用户可以在其中定义任意结构并将它们传递给我的库,然后它将从静态成员中获取结构的内存布局,这种结构必须具有作为惯例。
例如:
struct CubeVertex {
// This is, per convention, required in each structure to describe itself
static const VertexElement Elements[];
float x, y, z;
float u, v;
};
const VertexElement CubeVertex::Elements[] = {
VertexElement("Position", VertexElementType::Float3),
VertexElement("TextureCoordinates", VertexElementType::Float2),
};
C++ 最佳实践建议我将静态变量及其初始化移动到我的源 (.cpp) 文件中。然而,我希望变量初始化尽可能接近结构,因为每当结构发生变化时,变量也必须更新。
是否有一种可移植的(至少 = MSVC + GCC)方法在头文件中声明这样的变量,而不会导致链接器出现模棱两可的符号/重新定义错误?