我正在研究一个SFML项目,我必须将一个RectangleShapes数组传递给一个void函数。
std::vector<sf::RectangleShape> shape(16);
void setProperties(shape);
该功能尚未制作,但Visual Studio虽然给了我一个错误。
void setProperties(std::vector<sf::RectangleShape> shapes(16))
{
}
但是这段代码似乎没有用。如果你能帮助我,那就太好了。
答案 0 :(得分:0)
void setProperties(std::vector<sf::RectangleShape> shapes(16))
您有语法错误,因为参数应该由类型声明和参数的可选名称组成,但是您有一个无关的(16)
void setProperties(std::vector<sf::RectangleShape> shapes)
但是这会将std::vector
的副本传递给该函数,这可能不是您想要的(因为它很昂贵)。如果您不需要修改向量,最好传递引用或const引用,例如:
void setProperties(const std::vector<sf::RectangleShape>& shapes)
答案 1 :(得分:0)
(16)调用std :: vector的构造函数。您无法在函数定义中使用函数调用,因此您需要更改:
document.querySelector('button.getscript').addEventListener('click', function(e){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "//massage.book.me/iframe/pm_loader_v2.php?width=960&url=//massage.book.me&theme=bootstrap__square_rainbow__colored_light&layout=bootstrap__square_rainbow&timeline=modern&mode=auto&mobile_redirect=0&hidden_steps=event,unit&event=1&unit=1";
document.getElementsByTagName("head")[0].appendChild(script);
e.preventDefault();
})
到
void setProperties(std::vector<sf::RectangleShape> shapes(16)){ ... }
答案 2 :(得分:0)
当您声明变量shape
时,您将值16传递给类std::vector<sf::RectangleShape>
的构造函数。构造函数是在构造对象期间操作的函数。
但是,当您声明函数setProperties
时,您将确定将哪些参数传递给函数而不是初始化这些参数。在声明参数的构造函数时,不能为其提供参数。尝试声明和定义您的函数,如下所示:
void setProperties(std::vector<sf::RectangleShape> shapes)
{
// Set properties here.
}
值得注意的是,由于你是通过值传递的,因此矢量的副本将传递给函数而不是原始矢量...如果你希望函数影响{{的值1}},你应该通过引用传递它。
答案 3 :(得分:0)
我现在修好了。我不知道它是否是一个很好的解决方案,但它对我有用。
我将void
更改为std::vector<sf::RectangleShape>
现在就是这样:
std::vector<sf::RectangleShape> shape(16);
shape = setProperties(shape);
std::vector<sf::RectangleShape> setProperties(std::vector<sf::RectangleShape> shapes)
{ ... }