N***r 发帖数: 2539 | 1 有这么一段代码
template
void foo(SomeKindofClass & myClass);
函数foo的具体实现分布在各个C文件中,比如在myProblemClassABC中
templet <>
void
foo(SomeKindofClass & myClass)
{
/* real codes here */
}
在myProblemClassXYZ中
templet <>
void
foo(SomeKindofClass & myClass)
{
/* real codes here */
}
现在有另一个function,功能是根据从输入文件中读到的myProblemClassXXX来调用foo
,很笨的方法就是这样
void function(std::vector class_names_from_input)
{
SomeKindofClass myClass = SomeKindofClass();
for(unsigned int i = 0; i < class_names_from_input.size(); i++}
{
if(class_names_from_input[i].compare("myProblemClassABC") == 0)
foo(myClass);
else if(class_names_from_input[i].compare("myProblemClassXYZ") == 0)
foo(myClass);
else if(class_names_from_input[i].compare("myProblemClassOPQ") == 0)
foo(myClass);
else
{
std::cerr << "unknown type" << std::endl;
exit(1);
}
}
}
问题是,随着程序的发展,myProblemClassXXX会越来越多,这个if else的长度越来越
长,有没有比较好的#define 来干这个事? |
t****t 发帖数: 6806 | 2 apparently you need a directory and each implementation will need to registe
r to this directory.
【在 N***r 的大作中提到】 : 有这么一段代码 : template : void foo(SomeKindofClass & myClass); : 函数foo的具体实现分布在各个C文件中,比如在myProblemClassABC中 : templet <> : void : foo(SomeKindofClass & myClass) : { : /* real codes here */ : }
|
N***r 发帖数: 2539 | 3 恩,应该就是这个register的过程了。有什么推荐可以看的代码吗?
registe
【在 t****t 的大作中提到】 : apparently you need a directory and each implementation will need to registe : r to this directory.
|
t****t 发帖数: 6806 | 4 i remember i had an old post in this board for a similar problem...
【在 N***r 的大作中提到】 : 恩,应该就是这个register的过程了。有什么推荐可以看的代码吗? : : registe
|
N***r 发帖数: 2539 | 5 如果能找到,感激不尽。
【在 t****t 的大作中提到】 : i remember i had an old post in this board for a similar problem...
|
t****t 发帖数: 6806 | 6 自己找找呗. google thrust programming register site:mitbbs.com
【在 N***r 的大作中提到】 : 如果能找到,感激不尽。
|
N***r 发帖数: 2539 | 7 多谢
【在 t****t 的大作中提到】 : 自己找找呗. google thrust programming register site:mitbbs.com
|
d****i 发帖数: 4809 | 8 一点小错误,这一行应该写成
SomeKindofClass myClass = SomeKindofClass();
=> SomeKindofClass myClass;
C++里面stack变量对象创建时不用call default ctor,直接按照C的办法来。
【在 N***r 的大作中提到】 : 有这么一段代码 : template : void foo(SomeKindofClass & myClass); : 函数foo的具体实现分布在各个C文件中,比如在myProblemClassABC中 : templet <> : void : foo(SomeKindofClass & myClass) : { : /* real codes here */ : }
|