Je continue d'obtenir l'erreur C2280 lorsque j'essaie d'ajouter un objet à un vecteur de type classe. Voici les fichiers qui me donnent l'erreurObtenir l'erreur C2280 en essayant d'ajouter un objet à un vecteur
'interfaceText::interfaceText(const interfaceText &)': attempting to reference a deleted function"
interfaceText.h
#include<SFML/Graphics.hpp>
#include<vector>
#include<iostream>
#include<math.h>
#include<sstream>
#include<ctime>
#include<cstdlib>
class interfaceText{
private:
std::string createString();
std::ostringstream stringStream;
sf::Text text;
sf::Vector2f position;
sf::Font font;
sf::Color color;
//DEBUG
int currentAngle = 1;
sf::Color generateRandomColors();
public:
sf::Text returnRenderObject();
interfaceText(sf::Vector2f textPosition, sf::Color textColor);
void updateText(float currentangle);//std::string string, sf::Vector2f textPosition, sf::Color textColor);
};
extern std::vector<interfaceText> textArray;
interfaceText.cpp
#include "interfaceText.h"
interfaceText::interfaceText(sf::Vector2f textPosition, sf::Color textColor):position(textPosition),color(textColor){
font.loadFromFile("AvenirNextLTPro-Cn.otf");
text.setString(createString());
text.setPosition(position);
text.setFont(font);
text.setColor(color);
textArray.push_back(*this); //<-Code that causes error?
}
std::string interfaceText::createString() {
std::string TESTSTRING="DEBUG";
return TESTSTRING;
}
void interfaceText::updateText(float currentAngle){//std::string string, sf::Vector2f textPosition, sf::Color textColor) {
text.setString(createString());
position.x = (cos(currentAngle*3.14/180)* position.x/2);
position.y = (sin(currentAngle*3.14/180)* position.y/ 2);
text.setPosition(position);
text.setColor(generateRandomColors());
//std::cout << text.getPosition().x<<" " << text.getPosition().y <<'\n';
currentAngle+=1;
}
sf::Text interfaceText::returnRenderObject() {
return text;
}
sf::Color interfaceText::generateRandomColors() {
srand(time(NULL));
sf::Color newColor (rand()%255, rand() % 255, rand() % 255,255);
return newColor;
}
Un dans main.cpp (ce qu'il ne sont pas tous parce que J'ai supprimé le code que j'ai jugé non pertinent)
#include"interfaceText.h"
#include<vector>
int main(){
interfaceText newText(sf::Vector2f(100, 100), sf::Color(255, 255, 255, 255));
return 0;
}
Je suis sûr que le code qui est à l'origine de cette erreur (ou au moins le déclenchement du compilateur pour donner un message d'erreur) est
textArray.push_back(*this);
dans le fichier interfaceText.cpp
Il y a aussi quelques notes données avec le message d'erreur comme indiqué ci-dessous:
note: compiler has generated 'interfaceText::interfaceText' here
see reference to function template instantiation 'void std::allocator<_Ty>::construct<_Objty,interfaceText&>(_Objty *,interfaceText &)' being compiled
des notes que je suppose que le compilateur tente d'ajouter une nouvelle cteur pour la classe interfaceText
mais je ne sais pas pourquoi
Vous avez manqué un constructeur par défaut pour 'interfaceText'? –
@ πάνταῥεῖ J'avais déjà essayé d'ajouter un constructeur par défaut mais cela n'a pas résolu le problème. Merci quand même pour vôtre aide – ThomasMartin