Objective c C++-目标C中的模板替换 如果我想支持从C++数据库查询中检索到几个类型,我可以创建一个基于模板的方法定义,比如 template<typename T> T getDBValue(int col){ throw "not implemented"; } template<> int getDBValue<int>(int col){ return 43; } template<> char* getDBValue<char*>(int col){ return "foo"; }

Objective c C++-目标C中的模板替换 如果我想支持从C++数据库查询中检索到几个类型,我可以创建一个基于模板的方法定义,比如 template<typename T> T getDBValue(int col){ throw "not implemented"; } template<> int getDBValue<int>(int col){ return 43; } template<> char* getDBValue<char*>(int col){ return "foo"; },objective-c,templates,Objective C,Templates,提前谢谢 实际上只有两个选项,具体取决于用户的便利程度: 按照你的建议去做,给不同的方法起不同的名字 只使用一个方法返回适合该项的任何类型(基本上将所有单一类型方法合并为一个,返回一个泛型类型,例如NSObject*或甚至id)。显然,只适用于“真实”对象返回类型,基本上要求调用者要么知道正确的结果类型,要么从结果中查询 实际上只有两种选择,这取决于用户的便利程度: 按照你的建议去做,给不同的方法起不同的名字 只使用一个方法返回适合该项的任何类型(基本上将所有单一类型方法合并为一个,返回一个

提前谢谢

实际上只有两个选项,具体取决于用户的便利程度:

  • 按照你的建议去做,给不同的方法起不同的名字
  • 只使用一个方法返回适合该项的任何类型(基本上将所有单一类型方法合并为一个,返回一个泛型类型,例如NSObject*或甚至id)。显然,只适用于“真实”对象返回类型,基本上要求调用者要么知道正确的结果类型,要么从结果中查询

实际上只有两种选择,这取决于用户的便利程度:

  • 按照你的建议去做,给不同的方法起不同的名字
  • 只使用一个方法返回适合该项的任何类型(基本上将所有单一类型方法合并为一个,返回一个泛型类型,例如NSObject*或甚至id)。显然,只适用于“真实”对象返回类型,基本上要求调用者要么知道正确的结果类型,要么从结果中查询

如果您想混合使用这两种语言,或者如果您发现其中一种语言更适合特定任务,则始终可以使用Objective-C++。通常,您可以通过将文件扩展名更改为
.mm
来编译为ObjC++

对于Objc接口,您可以考虑一个简单的包装接口,像这样,使用您现有的程序:

template<typename T>
T getDBValue(int col); // << not defined

template<>
int getDBValue<int>(int col){
    return 43;
}

template<>
const char* getDBValue<const char*>(int col){
    return "foo";
}
模板

T getDBValue(int col);// 如果您想混合使用这两种语言,或者如果您发现其中一种语言更适合于特定任务,则可以始终使用Objective-C++。通常,您可以通过将文件扩展名更改为
.mm
来编译为ObjC++

对于Objc接口,您可以考虑一个简单的包装接口,像这样,使用您现有的程序:

template<typename T>
T getDBValue(int col); // << not defined

template<>
int getDBValue<int>(int col){
    return 43;
}

template<>
const char* getDBValue<const char*>(int col){
    return "foo";
}
模板
T getDBValue(int col)//
@implementation MONDBEntry
{
    int col;
}
...

- (int)intValue
{
    return getDBValue<int>(self.col);
}

- (NSString *)stringValue
{
    return [NSString stringWithUTF8String:getDBValue<const char*>(self.col)];
}
...