相关疑难解决方法(0)

为什么模板只能在头文件中实现?

引自C++标准库:教程和手册:

目前使用模板的唯一可移植方法是使用内联函数在头文件中实现它们.

为什么是这样?

(澄清:头文件不是唯一的便携式解决方案.但它们是最方便的便携式解决方案.)

c++ templates c++-faq

1660
推荐指数
14
解决办法
46万
查看次数

将类型添加到std命名空间

std命名空间添加类型是否可以接受.例如,我想要一个TCHAR友好的字符串,以下是可接受的吗?

#include <string>

namespace std
{
    typedef basic_string<TCHAR> tstring;
}
Run Code Online (Sandbox Code Playgroud)

或者我应该使用自己的命名空间?

c++ stl namespaces

16
推荐指数
3
解决办法
4272
查看次数

在标准名称空间中声明名称的不良做法?

我正在浏览Google C++风格指南,并发现了这个:

"不要在命名空间std中声明任何内容,甚至不要在标准库类的前向声明中声明.在命名空间std中声明实体是未定义的行为,即不可移植.要从标准库声明实体,请​​包含相应的头文件."

有人可以解释这意味着什么以及为什么这是使用示例代码的未定义行为?

c++ coding-style c++-standard-library

7
推荐指数
4
解决办法
954
查看次数