Проблема с общим указателем при использовании условийC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проблема с общим указателем при использовании условий

Сообщение Anonymous »

В настоящее время я работаю над своим игровым двигателем и начал выполнять фундаментальные функции для моей системы компонентов объекта. Я хочу иметь метод, который добавляет новые компоненты. Чтобы быть уверенным, что только допустимые типы могут быть добавлены в список, я использовал оператор IF. Но при тестировании этой функции: < /p>
template
void AddComponent() {
bool state = std::is_base_of::value;
if (!state) {
std::string TypeName = typeid(T).name();
LOGERROR(TypeName + " IS NOT A COMPONENT");
return;
}
else {
std::string TypeName = typeid(T).name();
LOG(TypeName + " IS A COMPONENT");
componentList.emplace_back(std::make_shared());
}
}

int main(void)
{
//For example i added an invalid type Camera.
GameObject* gameObject = new GameObject;
gameObject->AddComponent();
delete gameObject;
}
< /code>
... Это бросили мне ошибку: < /p>
C2655 no overloaded function could convert all the argument types
< /code>
Я не понимаю, почему она дает мне эту ошибку, поскольку блок Else будет выполняться только тогда, когда тип действителен. < /p>
Некоторые подробности: < /p>

AddComponent является участником GameObject < /li>
Components Components. /> T следует добавить только в том случае, если он получен из класса компонентов (E.X. Transform) < /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/789 ... conditions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»