假设我有这个课程:
class Component1;
class Component2;
// many different Components
class Component42;
class MyClass
{
public:
MyClass(void) {};
std::list<Component1> component1List;
std::list<Component2> component2List;
// one list by component
std::list<Component42> component42List;
};
Run Code Online (Sandbox Code Playgroud)
我想创建一个具有以下签名的函数:
template<class T> void addElement(T component);
Run Code Online (Sandbox Code Playgroud)
它应该做到以下几点:
component是类型Component1,请将其添加到Component1Listcomponent是类型Component2,添加到Component2List,等等.可能吗?这样做的好方法是什么?
我可以通过以下函数获得相同的行为:
template<class T> void addElement(int componentType, T component);
Run Code Online (Sandbox Code Playgroud)
但我宁愿不必指定componentType这样的:它是无用的信息,它打开了可能的错误的大门(如果componentType不代表组件的类型).
我有错误"扩展另一个模板的模板不能在DFSiteBundle中有一个主体:Accueil:index.html.twig",但我在块外面没有html.
复制问题的最小代码:
这不起作用:
{% extends "::layout.html.twig" %}
{% stylesheets 'bundles/DFSite/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% block content %}
Test
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这项工作:
{% extends "::layout.html.twig" %}
{% block content %}
Test
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
使用layout.html.twig:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
{% stylesheets %}{% endstylesheets %}
<title>{% block title %}The title{% endblock %}</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
Run Code Online (Sandbox Code Playgroud)
如果我直接添加这个
{% stylesheets 'bundles/DFSite/css/*' filter='cssrewrite' %} …Run Code Online (Sandbox Code Playgroud)