我尝试遵循ETSI规范来实现一个软件。
现在,我必须编写一个结构,其中将一个变量声明为extern。

file2.cpp
struct struct_one {
    extern Algo algo;
    int x;
}




file1.cpp
struct struct_two {
    Algo algo;
    char c;
}


那么,如何“告诉”编译器两个“ algo”变量包含相同的内容?
在file2中包含file1是否足够?

或者我该怎么办?

问候

最佳答案

您无法做到这一点,但是您可以通过以下方式做到这一点:

file1.cpp
struct struct_two {
    Algo algo;
    char c;
}

file2.cpp
struct struct_one {
    explicit struct_one(struct_two& t) : algo(t.algo) {}

    Algo& algo;
    int x;
}


或使用组合模式(“有”关系):

file1.cpp
struct struct_two {
    Algo algo;
    char c;
}

file2.cpp
struct struct_one {
    struct_two t;
    int x;
}

10-08 11:25