STL映射与纯虚拟基类 我很久没有使用C++了。我试图显示一些多态行为: class func { public: virtual void print() = 0; }; class func1 : public func { public: void print () { cout << "FUNC 1" << endl; }; }; class func2 : public func { public: void print () { cout << "FUNC 2" << endl; }; }; static map<string,func *> myMap; static func1 f1 = func1 (); static func2 f2 = func2 (); myMap["func1"] = &f1; myMap["func2"] = &f2;
我希望:STL映射与纯虚拟基类 我很久没有使用C++了。我试图显示一些多态行为: class func { public: virtual void print() = 0; }; class func1 : public func { public: void print () { cout << "FUNC 1" << endl; }; }; class func2 : public func { public: void print () { cout << "FUNC 2" << endl; }; }; static map<string,func *> myMap; static func1 f1 = func1 (); static func2 f2 = func2 (); myMap["func1"] = &f1; myMap["func2"] = &f2;,c++,stl,virtual,abstract-base-class,C++,Stl,Virtual,Abstract Base Class,我希望: FUNC 1 FUNC 2 不确定这样做是否正确。当我编译代码时,会出现以下错误: test.cc:31: error: expected constructor, destructor, or type conversion before ‘=’ token test.cc:32: error: expected constructor, destructor, or type conversion before ‘=’ token 指的是以下几行: myMap["func1"]
FUNC 1
FUNC 2
不确定这样做是否正确。当我编译代码时,会出现以下错误:
test.cc:31: error: expected constructor, destructor, or type conversion before ‘=’ token
test.cc:32: error: expected constructor, destructor, or type conversion before ‘=’ token
指的是以下几行:
myMap["func1"] = &f1;
myMap["func2"] = &f2;
谢谢。表达式语句与赋值语句一样,只能进入函数内部 在C++11中,可以使用括号初始化来初始化静态映射:
static map<string,func *> myMap = {
{"func1", &f1},
{"func2", &f2}
};
如果可能的话,一个更好的想法可能是避免非平凡的全局变量;表达式语句,就像赋值语句一样,只能进入函数内部 在C++11中,可以使用括号初始化来初始化静态映射:
static map<string,func *> myMap = {
{"func1", &f1},
{"func2", &f2}
};
如果可能的话,一个更好的想法可能是避免非平凡的全局变量;表达式语句,就像赋值语句一样,只能进入函数内部 在C++11中,可以使用括号初始化来初始化静态映射:
static map<string,func *> myMap = {
{"func1", &f1},
{"func2", &f2}
};
如果可能的话,一个更好的想法可能是避免非平凡的全局变量;表达式语句,就像赋值语句一样,只能进入函数内部 在C++11中,可以使用括号初始化来初始化静态映射:
static map<string,func *> myMap = {
{"func1", &f1},
{"func2", &f2}
};
如果可能的话,一个更好的想法可能是避免非平凡的全局变量;它们常常带来痛苦。做这些陈述
myMap[“func1”]=&f1代码>,myMap[“func2”]=&f2代码>出现在函数定义体之外?@πάνταῥεῖ 很可能是的,是的。我明白了,现在我的代码可以编译了。为什么它们必须在函数定义中?static func1 f1=func1()代码>应该是静态func1 f1
@NeilKirk不是静态func1 f1=func1()代码>合法C++代码?执行这些语句<代码> MYMAP [“函数1”] =和F1;<代码>,myMap[“func2”]=&f2代码>出现在函数定义体之外?@πάνταῥεῖ 很可能是的,是的。我明白了,现在我的代码可以编译了。为什么它们必须在函数定义中?static func1 f1=func1()代码>应该是静态func1 f1
@NeilKirk不是静态func1 f1=func1()代码>合法C++代码?执行这些语句<代码> MYMAP [“函数1”] =和F1;<代码>,myMap[“func2”]=&f2代码>出现在函数定义体之外?@πάνταῥεῖ 很可能是的,是的。我明白了,现在我的代码可以编译了。为什么它们必须在函数定义中?static func1 f1=func1()代码>应该是静态func1 f1
@NeilKirk不是静态func1 f1=func1()代码>合法C++代码?执行这些语句<代码> MYMAP [“函数1”] =和F1;<代码>,myMap[“func2”]=&f2代码>出现在函数定义体之外?@πάνταῥεῖ 很可能是的,是的。我明白了,现在我的代码可以编译了。为什么它们必须在函数定义中?static func1 f1=func1()代码>应该是静态func1 f1
@NeilKirk不是静态func1 f1=func1()代码>合法C++代码?