问题标签 [template-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 将函数模板传递给另一个函数时的重载解决方案
我有以下代码:
foo
传入时的重载分辨率正常工作baz
。但是,当传入函数 templatebar
时,编译器无法推断 的模板参数T0
,foo
即使bar
范围内只有一个,并且它的第一个参数完全解析为int
。如何编写函数模板以便编译器可以解析foo
调用?foo(bar, 10)
c++ - 以下模板函数的含义?
我在遗留代码中看到了上面的代码,但不知道它的含义。它既不是常规的非特化函数定义,也不是完整的特化函数定义。
任何想法?
c++ - 为什么该模板函数不编译?
这是一个非常短的片段,它不能用 g++ 4.7.1 编译(顺便说一下,它也不能用 gcc 4.6.3 编译)。
这就是 gcc 4.7.1 的输出(4.6.3 说的几乎相同)。
/tmp/ccNWJW6X.o: 在函数
main': main.cpp:(.text+0x15): undefined reference to
std::basic_ostream >& operator<< (Foo&, char const (&) [4])' collect2: ld 返回 1 退出状态
任何人都可以解释为什么?
编辑
我也尝试过 clang 3.1,它说的完全一样。
c++ - 如何在模板中调用类型的析构函数?
例如,我们有一个这样的函数:
我们不能object.Type()
像and一样调用构造函数和析构函数object.~Type()
(现在不是真的)(为什么?=C)
要调用我们可以喜欢的构造函数new(&object) TYPE()
。而且我不知道如何调用析构函数(不存在放置delete
)。这个怎么做?
c++ - 尽管使用不存在的成员进行程序编译
这个程序编译(与程序的其余部分),即使这两行node *toFollow = l->yhjfrtydfg;
显然node *whatever = l.asfqwejfq3fqh23f8hq23r1h23017823r087q1hef;
是疯狂的输入。这很奇怪,因为任何其他错误都被捕获。有什么帮助吗?
c++ - 为什么我自己的输出流类不起作用?
VC++ 2012 编译器抱怨:
错误 C2676:二进制“<<”:“OutputStream”未定义此运算符或转换为预定义运算符可接受的类型
c++ - 函数声明中模板关键字的含义
“在函数声明中使用模板关键字”是什么意思?
在此示例中,编译器错误并出现错误:“func”不是模板函数。
但下面的例子是好的。
在上述情况下,“模板”是什么意思?它只是表明这个函数是模板函数吗?
c++ - 使用模板类的嵌套类型作为模板参数
我想使用模板类的嵌套类型来实现模板函数。
我刚刚在这里读到,最好实现operator <<
为非会员和非朋友功能。因此,我决定将功能toStream()
和tableToStream()
外部移动MyClass
:
MyClass::toStream()
转换operator <<
为非会员和非朋友功能很容易:
但我想单独使用operator <<
而不是调用MyClass::tableToStream()
:
对于该函数MyClass::tableToStream()
,我可以使用以下实现,但这可能会使流输出混乱,因为该函数太通用(任何类型都可以TABLE
)。
因此,我想限制为MyClass
. 以下是我尝试转换MyClass::tableToStream()
为标准operator <<
非会员和非朋友功能的尝试之一:
但错误大约是typename MyClass<T>::TABLE
.
c++ - 带有模板函数调用的 C++ 未解析的外部符号
只要我不调用该函数,一切都很好,但是一旦我调用该函数,我就会得到一个未解析的外部符号。我所有的类都在 SSE 命名空间(我自己的)中,并且到目前为止运行良好。让我展示。
这是我调用函数的地方。Game 是一个为我运行幕后工作的类(该类一切正常),Game.Objects() 返回负责创建和删除对象以及为对象提供组件的 Game 的 ObjectManager。ObjectCreate 是一个模板函数,它返回一个指向创建的新对象的指针。
从 ObjectManager 的 .cpp 文件中:
这会为新的 GameObject 分配一个唯一的名称并在内存中创建它,然后将其存储到一个向量中。另一件要提的事情是,对于许多与此类似的 ObjectManager 和 GameObject 函数,我都遇到了这个未解决的外部符号错误,但只有当我在代码中调用它们时才会出现相同的情况。
仅供参考,错误为:Error 2 error LNK2019: unresolved external symbol "public: class SSE::GameObject * __thiscall SSE::ObjectManager::ObjectCreate(void)" (??$ObjectCreate@VGameObject@SSE@@@ObjectManager @SSE@@QAEPAVGameObject@1@XZ) 在函数 _SDL_main C:\SDL\SimpleStateEngine\SSE\main.obj SSE 中引用
如果您需要其他任何东西,请告诉我,我一直在寻找几个小时。
c++ - 模板化成员函数不接受任何类型的参数?
我有以下课程:
但是,每当我尝试使用 AddParameter 时,它都会说没有函数重载与参数列表匹配。我尝试了各种可能的组合。例如:
所以我像这样使用它:
这不起作用,Intellisense 告诉我它与参数列表不匹配,即使它匹配。参数列表应该是 (Parameter, unsigned int) 就是这样。我做错了什么?(对于感兴趣的人,AddParameter 所做的是它获取 typeValue 的值并将其设置为参数系统内 Map 中的 void 指针,然后将该值的映射键与参数的 ID 同步,并且参数也有句柄到它的父参数系统,所以从它的 ID 和类型检查 + 类型转换它总是可以在系统中获取响应它的 ID 的参数值,但这不应该与我认为的问题相关......)