小编Ign*_*eza的帖子

具有灵活返回类型的C++函数模板

让我们说我们有这样的功能

template <class T, class T2>
T getMin(T a, T2 b) {
  if(a < b)
    return a;
  return b;
}
Run Code Online (Sandbox Code Playgroud)

如果我们这样调用函数

int a, b;
long c;

a = getMin(b, c);
Run Code Online (Sandbox Code Playgroud)

如果c是<a,那么c的值将被类型转换为int.

是否可以使返回类型具有灵活性,以便返回int,long或任何其他类型的"<"而不是类型的类型?

编辑:函数中涉及的类型可以是从简单类型到复杂类的任何类型,其中某些时候无法进行类型转换.

c++ templates

6
推荐指数
1
解决办法
2万
查看次数

基类重载方法的访问声明

鉴于我们在基类中重载了方法,并且派生类继承为private/protected.

  1. 我们可以只恢复重载方法的原始访问级别的一个/几个吗?
  2. 在GCC 4.4.0上,我尝试将基本方法置于受保护的访问之下,然后使用私有访问继承它.当我尝试将访问级别恢复为公共时,它的工作原理!这是它的假设吗?或者它是编译器的错误?据我了解,恢复访问级别不应该用于提升或降级成员的访问级别.

代码段:

class base {
  public:
    void method() {}
    void method(int x) {}
  protected:
    void method2() {}
};

class derived : private base {
  public:
    base::method; // Here, i want to restore only the none parameterized method
    base::method2; // method2 is now public??
};
Run Code Online (Sandbox Code Playgroud)

c++ overloading

6
推荐指数
1
解决办法
1887
查看次数

标签 统计

c++ ×2

overloading ×1

templates ×1