有没有办法在类构造函数中使用 std::p air<>
Is there a way to use a std::pair<> in a class constructor
我一直在尝试在类构造函数中使用std::对。每当我试图声明一个对象或使用这个构造函数时,我都会得到一个错误,即"没有构造函数的实例与参数列表匹配
playAi::playAi(pair<int, int> p, int x, int y, int piece_pos[])
{
int xPos = x;
int yPos = y;
setup();
}
playAi::~playAi(void)
{
}
void playAi::setup()
{
pair<int, int> column1(10, 110);
pair<int, int> column2(130, 230);
pair<int, int> column3(250, 250);
int colX1 = 10;
int colY1 = 130;
//initializing the pair
playAi temp[] = {
**playAi(column1, colX1, colY1, piece_pos[0])**,
};
}
除了我正在做的事情,我想不出还有什么其他方式可以声明这个对象。最后一个条目"piece_pos[]"是从另一个类继承的。我需要使用完整的作用域名称吗?谢谢你的帮助。
问题不在于配对-您的代码在这方面很好(尽管您可以通过使用make_pair
模板函数避免创建临时的,但这只是一种优化,而不是修复(。
问题是,当你试图将piece_pos[0]
传递给构造函数时,构造函数希望看到指向piece_pos
的指针或piece_pos
的数组
piece_pos tmp[1];
...
playAi(column1, colX1, colY1, tmp)
以下是如何使用make_pair
:重写此代码
playAi(make_pair(10, 110), colX1, colY1, tmp)
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- C++:无法使用 "=" 运算符更改 std::p air 的值
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 使用 std::p air 进行返回值优化
- 标准::在双类和类的 std::p air 上更大
- 为什么 std::p air 的大小与其元素的大小之和不同?
- 像 std::list<std::p air<string, string>> 这样的结构在返回时会被复制吗?
- 查找 std::vector 中的最小值和最大值 std::p air
- 地图是否将元素存储为 std::p air?
- std::p air 会破坏其动态分配的对象吗?
- 如何在 std::p air 中使用 System::Guid 和自定义枚举?
- 如何显式调用运算符<<
- boost::mpl 不使用(甚至不兼容)std::p air 的原因是什么?
- 在具有 std::p air 键和值的映射中添加 b2vec2
- 无法访问 std::p air 的成员秒
- 如何在 std::map 中从 std::vector of std::p air 中获取输入?