一个关于c++模板的问题

docici 发布于 2013/05/10 17:08
阅读 162
收藏 0
//代码如下
template<typename ValueT>
class the_value{
public:
	ValueT value_;
	char * name_;
	bool flag_;
};
class my_value{
	the_value<int> ivalue_;
	the_value<float> fvalue_;
public:
	template<typename ValueT>
	the_value<ValueT>& operator[](char const* name){
		if(0 == strcmp(name, ivalue_.name_)){
			return ivalue_;
		}
		if(0 == strcmp(name, fvalue_.name_)){
			return fvalue_;
		}
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
//请教如何改以达到如下效果呢,当前还编译不过(VC++9.0)
        my_value myval;
	myval["test"].flag_ = false;
	return 0;
}
加载中
0
Lunar_Lin
Lunar_Lin

 发现你这是动态的返回 类型.  这不可能由C++模板来完成.

C++模板是在编译静态时期实现的. 动态的东西 你应该用继承体系 或者union+type字段.
C++模板必须在编译器的时候 明确你这个函数的返回类型 没一点含糊.  有时候看起来很多态只是因为它能帮你自动生成而已.

0
docici
docici
谢谢你的回答!  我已经放弃这种写法了

返回顶部
顶部