vector<Object> objects[1];
objects[0] = Object("models/tree.png", 600, 1000, 93, 178);
vector<Object> objects;
objects.emplace_back("models/tree.png", 600, 1000, 93, 178);
resize
.objects[1] = Object("models/tree.png", 600, 1000, 93, 178);
push_back
. objects
, сколько нужно, а вектор подстроится. vector<Object> objectss(2);
objectss.at(0) = Object("models/tree.png", 600, 1000, 93, 178);
objectss.at(1) = Object("models/tree.png", 400, 1000, 93, 178);
window.draw(objectss[0].sprite);
Ошибка C2512 Object::Object: нет подходящего конструктора по умолчанию
vector<Object> objects;
objects.emplace_back("models/tree.png", 600, 1000, 93, 178);
objects.emplace_back("models/tree.png", 400, 1000, 93, 178);
window.draw(objects[0].sprite);
objects[0]
. Ничего шакального. Image tre1;
tre1.loadFromFile("models/tree.png");
Texture tre2;;
tre2.loadFromImage(tre1);
Sprite tre;
tre.setTexture(tre2);
vector<Object> objects;
objects.emplace_back("models/tree.png", 600, 1000, 93, 178);
objects.emplace_back("models/tree.png", 400, 1000, 93, 178);
class Object {
public:
int w, h, x, y;
String File;
Image image;
Texture texture;
Sprite sprite;
Object(String F, float X, float Y, float W, float H) {
File = F;
w = W; h = H;
image.loadFromFile("" + File);
image.createMaskFromColor(Color::Red);
texture.loadFromImage(image);
sprite.setTexture(texture);
x = X; y = Y;
this->File = F;
this->x = X;
this->y = Y;
this->w = W;
this->h = H;
sprite.setTextureRect(IntRect(0, 0, w, h));
}
};
image.loadFromFile("" + File);
image.loadFromFile(File);
sprite.setTextureRect(IntRect(0, 0, w, h));
sprite.setTextureRect(IntRect(x, y, w, h));
image.createMaskFromColor(Color::Red);
image.createMaskFromColor(Color::Red)
- это называется choma key.sprite.setTextureRect(IntRect(0, 0, w, h))
- задает позицию отображения участка текстуры в пространстве координат самой текстуры. (0, 0, w, h)
означает выводить прямоугольный участок текстуры от (0, 0) и до (w, h). Этот участок будет выведен на всей поверхности спрайта, у которого есть свои размеры.Object
ты определил конструктор преобразования. Это привело к удалению неявного конструктора по умолчанию. Теперь тебе надо определить явный конструктор по умолчанию чтобы иметь возможность писать objects[1] = Object("models/tree.png", 600, 1000, 93, 178);
.элемент вектора не обязан быть DefaultConstructible, если заполнять вектор не через resize
resize
? Расскажи по этапам, что творится с состоянием вектора во время изменения его длины. Вот, скажем, был вектор с нулевой емкостью и делаем ему resize( 5 )
. push_back
или emplace_back
, то конструктор по умолчанию вызываться уже не должен и, соответственно, его наличие не требуется.