关于头文件写类成员函数实现,编译时报“重复定义的符号”
2013-05-29 10:39
513 查看
//头文件A class A { void foo(){} };
//头文件B class B { void foo(); }; void B::foo() {}
//头文件C template<class T> class C { void foo(); }; template<class T> void C<T>::foo() { }
如果有两个文件同时包含头文件A,编译没问题,因为这种写法默认了foo为内联函数。
如果有两个文件同时包含头文件B,编译报重复定义的符号,因为这个函数会被链接两次。
如果有两个文件同时包含头文件C,编译没问题,因为类模板只有当需要实例化的时候才会被编译链接。
如理解有错误请指正。
相关文章推荐
- 关于头文件重复包含以及函数重定义问题
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- c++11 条款22:当使用Pimpl(指向实现的指针)时,在实现文件里定义特定的成员函数
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- 关于头文件重复包含以及函数重定义问题
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- hpp文件解决类成员函数重复定义的问题
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用 .
- 头文件中写类的实现出现函数重复定义的问题
- 模板类成员函数的定义问题:函数实现不能定义在源文件中,一定要在头文件中
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- 头文件里面实现一个函数,在两个cpp中包含,则重复定义,如果加上inline则不会报错
- Effective Modern C++ 条款22 当使用Pimpl Idiom时,在实现文件中定义特殊成员函数
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- 关于成员函数的Command模式的简单实现
- 模板类成员函数的定义和声明为什么要放在一个文件中