Error: no matching function for call to 'sf::RenderWindow::draw(<unresolved overloaded function type>)'| SFML in C++
Error: no matching function for call to 'sf::RenderWindow::draw(<unresolved overloaded function type>)'| SFML in C++
我试图创建一个 Button
class 并将其与 SFML 一起使用,不幸的是,它产生了错误:
no matching function for call to 'sf::RenderWindow::draw()'|
还有一些。
这是代码:
void onclic(){
cout << "Clicked";
}
class Button{
public:
string ButtonText;
Color color;
int sizee;
int x;
int y;
RenderWindow winname;
void func(){
cout << "\n";
}
void Butt(string ButtonText, Color color, int sizee, int x, int y, function<void()> funcc, RenderWindow winname){
Text tt;
tt.setString(ButtonText);
tt.setColor(color);
tt.setPosition(x, y);
tt.setCharacterSize(sizee);
Event e;
while (winname.pollEvent(e)) {
switch (e.type) {
case Event::MouseButtonPressed:
funcc();
}
}
}
};
int main() {
sf::RenderWindow sfmlWin;
sfmlWin.setTitle("Hello!");
sf::Font font;
if (!font.loadFromFile("Raleway-Regular.ttf")) {
while (sfmlWin.isOpen()) {
sf::Event e;
while (sfmlWin.pollEvent(e)) {
switch (e.type) {
case sf::Event::EventType::Closed:
using namespace sf;
Text t;
t.setCharacterSize(20);
t.setString("Something");
sfmlWin.draw(t);
}
}
sfmlWin.clear();
sfmlWin.draw(t);
sfmlWin.display();
}
return -1;
}
sf::Text message("Hello, World!", font);
while (sfmlWin.isOpen()) {
sf::Event e;
while (sfmlWin.pollEvent(e)) {
switch (e.type) {
case sf::Event::EventType::Closed:
using namespace sf;
Text t;
t.setString("Something");
sfmlWin.draw(t);
Button buttt;
Color col(0,255,0);
buttt.Butt("CLICK!", col, 20, 50, 50, onclic, sfmlWin);
sfmlWin.draw(buttt.Butt);
}
}
if (e.type == sf::Event::MouseButtonPressed)
{
if (e.mouseButton.button == sf::Mouse::Left)
{
if(e.mouseButton.x >= 20 && e.mouseButton.y >= 20 && e.mouseButton.x <= 40 && e.mouseButton.y <= 40){
cout << "Pressed.";
}
}
}
sfmlWin.clear();
sfmlWin.draw(message);
sfmlWin.display();
}
return 0;
}
这是 Code::Blocks 中构建日志中的第一个错误。
error: use of deleted function 'sf::RenderWindow::RenderWindow(const sf::RenderWindow&)'.
下一行是
In file included from C:...\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\SFML-2.5.1\include/SFML/Graphics.hpp:47, from E:\something.cpp:4: C:\Users...\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\SFML-2.5.1\include/SFML/Graphics/RenderWindow.hpp:44:25: note: 'sf::RenderWindow::RenderWindow(const sf::RenderWindow&)' is implicitly deleted because the default definition would be ill-formed: class SFML_GRAPHICS_API RenderWindow : public Window, public RenderTarget ^~~~~~~~~~~~
我哪里错了?
error: use of deleted function 'sf::RenderWindow::RenderWindow(const sf::RenderWindow&)'.
这告诉您您正在尝试复制 sf::RenderWindow
但 sf::RenderWindow
不可复制。
在显示的代码中,这是有问题的副本:
void Butt(string ButtonText, Color color, int sizee, int x, int y,
function<void()> funcc, RenderWindow winname)
// ^^^^^^^^^^^^
改为引用:
void Butt(string ButtonText, Color color, int sizee, int x, int y,
function<void()> funcc, RenderWindow& winname)
// ^
我试图创建一个 Button
class 并将其与 SFML 一起使用,不幸的是,它产生了错误:
no matching function for call to 'sf::RenderWindow::draw()'|
还有一些。
这是代码:
void onclic(){
cout << "Clicked";
}
class Button{
public:
string ButtonText;
Color color;
int sizee;
int x;
int y;
RenderWindow winname;
void func(){
cout << "\n";
}
void Butt(string ButtonText, Color color, int sizee, int x, int y, function<void()> funcc, RenderWindow winname){
Text tt;
tt.setString(ButtonText);
tt.setColor(color);
tt.setPosition(x, y);
tt.setCharacterSize(sizee);
Event e;
while (winname.pollEvent(e)) {
switch (e.type) {
case Event::MouseButtonPressed:
funcc();
}
}
}
};
int main() {
sf::RenderWindow sfmlWin;
sfmlWin.setTitle("Hello!");
sf::Font font;
if (!font.loadFromFile("Raleway-Regular.ttf")) {
while (sfmlWin.isOpen()) {
sf::Event e;
while (sfmlWin.pollEvent(e)) {
switch (e.type) {
case sf::Event::EventType::Closed:
using namespace sf;
Text t;
t.setCharacterSize(20);
t.setString("Something");
sfmlWin.draw(t);
}
}
sfmlWin.clear();
sfmlWin.draw(t);
sfmlWin.display();
}
return -1;
}
sf::Text message("Hello, World!", font);
while (sfmlWin.isOpen()) {
sf::Event e;
while (sfmlWin.pollEvent(e)) {
switch (e.type) {
case sf::Event::EventType::Closed:
using namespace sf;
Text t;
t.setString("Something");
sfmlWin.draw(t);
Button buttt;
Color col(0,255,0);
buttt.Butt("CLICK!", col, 20, 50, 50, onclic, sfmlWin);
sfmlWin.draw(buttt.Butt);
}
}
if (e.type == sf::Event::MouseButtonPressed)
{
if (e.mouseButton.button == sf::Mouse::Left)
{
if(e.mouseButton.x >= 20 && e.mouseButton.y >= 20 && e.mouseButton.x <= 40 && e.mouseButton.y <= 40){
cout << "Pressed.";
}
}
}
sfmlWin.clear();
sfmlWin.draw(message);
sfmlWin.display();
}
return 0;
}
这是 Code::Blocks 中构建日志中的第一个错误。
error: use of deleted function 'sf::RenderWindow::RenderWindow(const sf::RenderWindow&)'.
下一行是
In file included from C:...\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\SFML-2.5.1\include/SFML/Graphics.hpp:47, from E:\something.cpp:4: C:\Users...\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\SFML-2.5.1\include/SFML/Graphics/RenderWindow.hpp:44:25: note: 'sf::RenderWindow::RenderWindow(const sf::RenderWindow&)' is implicitly deleted because the default definition would be ill-formed: class SFML_GRAPHICS_API RenderWindow : public Window, public RenderTarget ^~~~~~~~~~~~
我哪里错了?
error: use of deleted function 'sf::RenderWindow::RenderWindow(const sf::RenderWindow&)'.
这告诉您您正在尝试复制 sf::RenderWindow
但 sf::RenderWindow
不可复制。
在显示的代码中,这是有问题的副本:
void Butt(string ButtonText, Color color, int sizee, int x, int y,
function<void()> funcc, RenderWindow winname)
// ^^^^^^^^^^^^
改为引用:
void Butt(string ButtonText, Color color, int sizee, int x, int y,
function<void()> funcc, RenderWindow& winname)
// ^