我遇到模板问题,如果你尝试给模板化函数一个字符串参数,编译器会将"Hello World"解释为const char [12].我希望它是const char*.
我可以通过将每个字符串静态转换为'const char*'来"解决"这个问题,但由于我正在尝试将其用作日志系统的一部分,因此将其简单化是一个很大的目标.
由于很难解释我的意思,我想出了一个简单的复制器.您将看到main函数的最后一行无法编译.
任何帮助将不胜感激
#include <string>
// Trivial base class so we can use polymorphism
class StoreItemsBase
{
public:
StoreItemsBase() {}
};
// Example of a trivial Templated class to hold some 3 items.
// Intent to have similar classes to hold 4,5..n items
template <typename T1, typename T2, typename T3>
class Store3Items : public StoreItemsBase
{
public:
Store3Items(const T1& t1, const T2& t2, const T3& t3)
:
StoreItemsBase(),
mT1(t1),
mT2(t2),
mT3(t3)
{}
private:
T1 …Run Code Online (Sandbox Code Playgroud) 有没有人研究过如何获得boost程序选项来解析不区分大小写的参数列表
在boost文档中,似乎支持它.见http://www.boost.org/doc/libs/1_53_0/boost/program_options/cmdline.hpp
即,设置style_t枚举标志,例如long_case_insensitive.但是,我不知道该怎么做.例如,如何获得以下代码片段来接受--Help或--help或--HELP
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("compression", po::value<double>(), "set compression level")
;
po::variables_map vm;
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm);
if (vm.count("help")) {
cout << desc << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)