我正在用c ++构建一个程序,用户可以设置一个在达到用户定义的条件时调用的函数.我对c ++只有一点经验.
我知道如何在python中执行此操作.您只需定义函数并将所述函数的名称放入结构中(我总是使用字典).当你去使用这个功能时,你会拨打一个类似于的电话:
methods = { "foo" : foo, "bar" : bar }
choice = input("foo or bar? ")
methods[choice]()
Run Code Online (Sandbox Code Playgroud)
关于如何在c ++中解决这个问题而不必对所有内容进行硬编码的任何想法?
index重载运算符和std :: map的insert方法调用之间有什么区别?
即:
some_map["x"] = 500;
Run Code Online (Sandbox Code Playgroud)
与
some_map.insert(pair<std::string, int>("x", 500));
Run Code Online (Sandbox Code Playgroud) 我有一个Foo对象,一个std :: list包含它的实例.我的问题是,当我向列表中添加一个新实例时,它首先调用ctor,然后调用dtor.然后是另一个实例上的dtor(根据this指针).
单个实例被添加到列表中,但由于调用了dtor(及其父项),因此无法按预期使用该对象.
下面是一些简化的代码来说明问题:
#include <iostream>
#include <list>
class Foo
{
public:
Foo()
{
int breakpoint = 0;
}
~Foo()
{
int breakpoint = 0;
}
};
int main()
{
std::list<Foo> li;
li.push_back(Foo());
}
Run Code Online (Sandbox Code Playgroud)