相关疑难解决方法(0)

什么是奇怪的重复模板模式(CRTP)?

没有参考书,任何人都可以CRTP用代码示例提供一个很好的解释吗?

c++ templates c++-faq crtp

173
推荐指数
5
解决办法
4万
查看次数

显式实例化 - 何时使用?

几个星期休息之后,我正在尝试使用David Vandevoorde和Nicolai M. Josuttis 所着的模板 - 完整指南来扩展和扩展我的模板知识,我现在想要了解的是模板的显式实例化.

我实际上并没有这样的机制问题,但我无法想象我想要或想要使用此功能的情况.如果有人能向我解释,我将不仅仅是感激.

c++ templates

73
推荐指数
3
解决办法
5万
查看次数

C++模板专业化语法

在C++ Primer Plus(2001,捷克语翻译)中,我发现了这些不同的模板特化语法:

功能模板

template <typename T> void foo(T);
Run Code Online (Sandbox Code Playgroud)

专业化语法

void foo(int param); // 1
void foo<int>(int param); // 2
template <> void foo<int>(int param); // 3
template <> void foo(int param); // 4
template void foo(int param); // 5
Run Code Online (Sandbox Code Playgroud)

谷歌搜索了一下,我发现只有3号例子.它们之间是否存在差异(通话,编译,使用)?其中一些是否已过时/弃用?为什么不使用No.1?

c++ template-specialization

49
推荐指数
1
解决办法
3万
查看次数

了解模板的声明,定义和专业化

我试图理解下面的示例,但是对三种不同的模板和结构声明感到有些困惑。

您能否描述下一次通话的结果?哪些模板将在何时使用?

为什么<S...>在结构体声明之后紧接着第一个template + class声明缺少“ ”?(请参见注释)?什么时候添加它是正确的,什么时候不正确?

#include <iostream>
#include <stdio.h>
using namespace std;


template<typename... S>
struct Example /* <S...> */ ; 

template<typename H, typename... T>
struct Example<H, T...>
{
    static const size_t value = sizeof(H) + Example<T...>::value;
};

template<>
struct Example<>
{
    static const size_t value = 0;
};


int main(){
    cout << Example<long, int, char>::value << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:13

c++ templates template-specialization variadic-templates c++11

12
推荐指数
3
解决办法
506
查看次数

非数据类型模板参数,更专业化生成?

我的代码是:

#include <iostream>

using namespace std;


template <typename T, int X>

class Test
{
   private:
    T container[X];
   public:
    void printSize();

};
template <typename T, int X>
void Test<T,X>::printSize()
{
    cout <<"Container Size = "<<X <<endl;
}


int main()
{
    cout << "Hello World!" << endl;
    Test<int, 20> t;
    Test<int, 30> t1;

    t.printSize();
    t1.printSize();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

题:

  1. 将产生多少专业化?如果我理解正确,它会产生两个特殊化,一个<int, 20> 用于<int, 30>.如果我的理解错了,请纠正吗?
  2. 有没有办法查看/检查任何逆向工程生成的专业化数量?

c++ instantiation

5
推荐指数
1
解决办法
121
查看次数

如何从另一个.cpp文件中的一个.cpp文件调用函数?

我尝试查找这个并使用头文件等获得混合结果.

基本上我有多个cpp文件,其中包含我用于二叉树,BST,链表等的所有功能.

我想要做的不是必须复制和粘贴函数,因为我需要它们,我希望能够做到

#include <myBSTFunctions.h> 
Run Code Online (Sandbox Code Playgroud)

并能够调用和使用我自己的功能.

完成此任务的步骤是什么?使用我使用的所有函数原型制作头文件?在哪里使用所有实际功能来放置cpp和头文件?有没有办法可以直接调用函数文件的目录?

即我更想把它与主源cpp文件放在同一个文件夹中,与我的一些同事分享.

我怎么能做到这一点?

编辑:Windows.miniGW编译器

c++

1
推荐指数
3
解决办法
8156
查看次数