【发布时间】:2021-01-23 11:02:56
【问题描述】:
假设我有一个只有标题的库。我已经把它简化成这样了。
仅标题库Foo.hpp
#ifndef FOO_HPP
#define FOO_HPP
struct Foo{
static const int A;
};
const int Foo::A = 100;
void SomeMethod(){
// do some stuff
}
#endif
然后,我有父类(Parent.hpp 和 Parent.cpp):
#ifndef PARENT_HPP
#define PARENT_HPP
#include "Foo.hpp"
struct Parent {
virtual void my_method();
};
#endif
儿童班(Child.hpp 和 Child.cpp)
#ifndef CHILD_HPP
#define CHILD_HPP
#include "Parent.hpp"
#include "Foo.hpp"
struct Child : Parent{
void my_method();
};
#endif
在my_method() 中,我只打印Foo::A 变量。
在真正的代码库中,我在仅标头库中有模板。
当我编译这个时,我得到一个“多重定义”错误。如何解决这个问题?
【问题讨论】:
-
您应该提供一个正确的工作示例,以及您收到的确切错误消息。另外,请说明您使用的是哪个编译器以及哪个版本的语言标准。
-
我试图提供一整套 (?) 替代方案供您考虑。
标签: c++ static-members multiple-definition-error