小编yur*_*rec的帖子

使用派生类进行c ++模板转换

#include <vector>

struct A {int a;};
struct B : public A {char b;};

int main()
{
  B b;
  typedef std::pair<A*, A*> MyPair;
  std::vector<MyPair> v;
  v.push_back(std::make_pair(&b, &b)); //compiler error should be here(pair<B*,B*>)
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这个编译(也许有人可以提供详细的解释?它是否与名称查找相关?

顺便说一句,在Solaris上,SunStudio12它没有编译: error : formal argument x of type const std::pair<A*, A*> & in call to std::vector<std::pair<A*,A*> >::push_back(const std::pair<A*, A*> & ) is being passed std::pair<B*, B*>

c++ templates solaris derived-class

5
推荐指数
1
解决办法
1168
查看次数

标签 统计

c++ ×1

derived-class ×1

solaris ×1

templates ×1