问题标签 [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.

0 投票
2 回答
116 浏览

c++ - 将函数模板传递给另一个函数时的重载解决方案

我有以下代码:

foo传入时的重载分辨率正常工作baz。但是,当传入函数 templatebar时,编译器无法推断 的模板参数T0foo即使bar范围内只有一个,并且它的第一个参数完全解析为int。如何编写函数模板以便编译器可以解析foo调用?foo(bar, 10)

0 投票
2 回答
88 浏览

c++ - 以下模板函数的含义?

我在遗留代码中看到了上面的代码,但不知道它的含义。它既不是常规的非特化函数定义,也不是完整的特化函数定义。

任何想法?

0 投票
2 回答
120 浏览

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 tostd::basic_ostream >& operator<< (Foo&, char const (&) [4])' collect2: ld 返回 1 退出状态

任何人都可以解释为什么?

编辑

我也尝试过 clang 3.1,它说的完全一样。

0 投票
4 回答
8068 浏览

c++ - 如何在模板中调用类型的析构函数?

例如,我们有一个这样的函数:

我们不能object.Type()像and一样调用构造函数和析构函数object.~Type()(现在不是真的)(为什么?=C

要调用我们可以喜欢的构造函数new(&object) TYPE()。而且我不知道如何调用析构函数(不存在放置delete)。这个怎么做?

0 投票
3 回答
125 浏览

c++ - 尽管使用不存在的成员进行程序编译

这个程序编译(与程序的其余部分),即使这两行node *toFollow = l->yhjfrtydfg;显然node *whatever = l.asfqwejfq3fqh23f8hq23r1h23017823r087q1hef;是疯狂的输入。这很奇怪,因为任何其他错误都被捕获。有什么帮助吗?

0 投票
1 回答
240 浏览

c++ - 为什么我自己的输出流类不起作用?

可能重复:
重载 operator<< 时 std::endl 的类型未知

VC++ 2012 编译器抱怨:

错误 C2676:二进制“<<”:“OutputStream”未定义此运算符或转换为预定义运算符可接受的类型

0 投票
2 回答
117 浏览

c++ - 函数声明中模板关键字的含义

“在函数声明中使用模板关键字”是什么意思?

在此示例中,编译器错误并出现错误:“func”不是模板函数。

但下面的例子是好的。

在上述情况下,“模板”是什么意思?它只是表明这个函数是模板函数吗?

0 投票
4 回答
1852 浏览

c++ - 使用模板类的嵌套类型作为模板参数

我想使用模板类的嵌套类型来实现模板函数。

我刚刚在这里读到,最好实现operator <<为非会员和非朋友功能。因此,我决定将功能toStream()tableToStream()外部移动MyClass

MyClass::toStream()转换operator <<为非会员和非朋友功能很容易:

但我想单独使用operator <<而不是调用MyClass::tableToStream()

对于该函数MyClass::tableToStream(),我可以使用以下实现,但这可能会使流输出混乱,因为该函数太通用(任何类型都可以TABLE)。

因此,我想限制MyClass. 以下是我尝试转换MyClass::tableToStream()为标准operator <<非会员和非朋友功能的尝试之一:

但错误大约是typename MyClass<T>::TABLE.

0 投票
1 回答
176 浏览

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 中引用

如果您需要其他任何东西,请告诉我,我一直在寻找几个小时。

0 投票
1 回答
101 浏览

c++ - 模板化成员函数不接受任何类型的参数?

我有以下课程:

但是,每当我尝试使用 AddParameter 时,它都会说没有函数重载与参数列表匹配。我尝试了各种可能的组合。例如:

所以我像这样使用它:

这不起作用,Intellisense 告诉我它与参数列表不匹配,即使它匹配。参数列表应该是 (Parameter, unsigned int) 就是这样。我做错了什么?(对于感兴趣的人,AddParameter 所做的是它获取 typeValue 的值并将其设置为参数系统内 Map 中的 void 指针,然后将该值的映射键与参数的 ID 同步,并且参数也有句柄到它的父参数系统,所以从它的 ID 和类型检查 + 类型转换它总是可以在系统中获取响应它的 ID 的参数值,但这不应该与我认为的问题相关......)