type_info引用删除的函数

时间:2019-03-08 14:47:12

标签: c++ types

我正在尝试编写一个类,用于存储配置项及其名称,描述和类型。

OptionItem.h:

 this.http.delete('http://localhost:3000/poems/delete' + ['1','3','4']);

OptionItem.cpp:

#include <typeinfo>
#include <string>

class OptionItem {
    public:
        OptionItem(std::string name, std::string text, type_info type);
        std::string name() const;
        std::string text() const;
        type_info OptionItem::type() const;
    private:
        std::string _name, _text;
        type_info _type;
};

我有第二堂课,讲了不同的选择:

选项h:

OptionItem::OptionItem(std::string name, std::string text, type_info type) :
    _name(name), _text(text), _type(type) {};

std::string OptionItem::name() const { return _name; }
std::string OptionItem::text() const { return _text; }
type_info OptionItem::type() const { return _type; }

Opt.cpp:

#include "OptionItem.h"

struct Opt {
    static const OptionItem opt1, opt2;
};

保存我的程序实际设置的第三个类如下:

Settings.h

#include "myOwnClass.h"

const OptionItem Opt::opt1= OptionItem("Option 1", "text1", typeid(std::string));
const OptionItem Opt::opt2= OptionItem("Option 2", "text2", typeid(myOwnClass));

Settings.cpp

#include "OptionItem"
#include <any>
#include <map>
#include <string>

class Settings {
public:
    void setOption(OptionItem option, std::any value);
    template<class T> T& getOption(const std::string &option) const;

private:
    std::map<std::string, std::any> _options;
}

void Settings::setOption(OptionItem option, std::any value) { _options.emplace(option.name(), value); } T& Settings::getOption(const std::string &option) const { if (_options.find(option) == _options.end()) { throw(std::runtime_error("No such option \"" + option + "\" } else { return std::any_cast<T>(_options[option]); } } 的调用可能如下所示:

Settings::getOption

我知道这有问题(这就是为什么我要问:-))第一个问题是getOption<Opt::opt1.type()>(Opt::opt1.name()) 似乎不可复制。 (编译器(VIsualCPP)告诉我std::type_info)。另一个问题,我肯定有很多我不知道的问题,因为编译因上述错误而停止。

您对我如何进行这项工作有任何建议吗?

0 个答案:

没有答案