【发布时间】:2015-08-25 17:19:10
【问题描述】:
我现在正在尝试修复特定故障大约两个小时,并且我已经完成了我的知识。有什么想法吗?
失败:
could not convert '{{TEST1, (& ffm::cond_test1)}, {TEST2, (& ffm::cond_test2)}}' from '<brace-enclosed initializer list>' to 'std::map<ffm::conditions, bool (*)()>'
代码:
#include <map>
#include <iostream>
namespace ffm {
typedef bool (*condFunction)();
enum conditions {
TEST1 = 0,
TEST2
};
bool cond_test1();
bool cond_test2();
}
using namespace ffm;
bool cond_test1()
{
std::cout << "cond_test1 is always TRUE" << std::endl;
return true;
}
bool cond_test2()
{
std::cout << "cond_test2 is always FALSE" << std::endl;
return false;
}
int main() {
std::map<conditions, condFunction> condFuncMap = {
{conditions::TEST1, &cond_test1},
{conditions::TEST2, &cond_test2} };
}
我正在使用 gcc4.8.4
【问题讨论】:
-
using 指令并不意味着后面的所有内容都添加为该命名空间的成员,它只是将该命名空间内的名称带入范围。将您的函数定义为
bool ffm::cond_test1() { ... }
标签: c++ c++11 dictionary