Итак, я создаю свою собственную систему компонентов Entity-Component, и я застрял в методе AddComponent Entity, который добавляет компоненты к Enity, вот как это выглядит:, который принимает класс как параметр шаблона и принимает параметры конструктора классов в качестве параметров метода.
template <typename T>
void AddComponent() {
NumOfComponents++;
AllComponents.push_back(new T());
}
это работает отлично, но что, если у меня есть компонент конструктор? Как так
class Transform : public Component
{
public:
Transfrm(Vector3f newPosition, Vector3f newRotation, Vector3f newScale) : Component("Transfrm") {};
Vector3f Position;
Vector3f Rotation;
Vector3f Scale;
~Transfrm();
};
То, что я пытаюсь достичь что-то вроде этого:
Entity ent1;
Vector3f Pos, Rot, Scl;
ent1.AddComponent<Transform>(Pos, Rot, Scl); // This is currently not possible
Как принимать Transform-х параметров метода в качестве параметров метода AddComponent, и добиться чего-то подобного, что выше?
привет код, который вы показали мне дает мне две ошибки в строке 24, который является «недействительным AddComponent (Args && ..args) {» Ошибка \t \t C3484 синтаксическая ошибка: ожидается, «->» перед типом возвращаемого \t Ошибка \t C3613 \t Отсутствует тип возврата после '->' ('int' предполагается) 24 – kooldart
Маленькая опечатка. Один период отсутствовал. –
никогда не исправлял его, заменил «..args» на 3 пунктирных аргумента: «... args» – kooldart