无法前向声明std::string和std::wstring的问题经常被讨论。据我了解,原因是这些类型是模板类basic_string的实例化的typedef:
namespace std {
typedef basic_string<char> string;
typedef basic_string<wchar_t> wstring;
}
语言不允许typedef的前向声明。
在C ++标准中,使用继承代替typedef是否更好呢:
namespace std {
class string : public basic_string<char> {};
class wstring : public basic_string<wchar_t> {};
}
这样我们就可以前向声明 std::string 和 std::wstring 了吗?
#include <string>
可以很好地处理任何声明。 - JAB#include <string>
。 - Daniel Heilper#include
呢?还有其他方法可以提高编译速度,可以看看预编译头文件。 - Ben Voigt