缺少带有向量的模板参数

Posted

技术标签:

【中文标题】缺少带有向量的模板参数【英文标题】:Missing Template Argument with Vectors 【发布时间】:2013-09-15 18:37:06 【问题描述】:

我正在尝试创建一个将创建向量并在其上使用冒泡排序的类。一切都编译得很好,除非我尝试创建一个名为 bubble 的 BubbleStorage 类。

编译器给我一个错误“在气泡之前缺少模板参数”,“预期;在气泡之前”。

这段代码没有写完;但是,因为我仍在制作冒泡排序功能。我只是想在继续之前解决这个问题。

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <vector>

using namespace std;

template<typename T>
class BubbleStorage

public:
    BubbleStorage();
    ~BubbleStorage();
    vector<T>MyVector;

    void add_data(int size)
    
        srand (time(NULL));

        for (T i = 0; i <= size; i++)
            random = rand() % 100;
        MyVector.push_back(random);
    

    void display_data()
    
        cout<<"The Vector Contains the Following Numbers"<<endl;
        for (vector<int>::iterator i = MyVector.begin(); i != MyVector.end(); ++i)
            cout<<' '<< *i;
    

    void max()
    

    

    void min()
    

    
;

int main(int argc, char *argv[])

    srand (time(NULL));

    int size = rand() % 50 + 25;
    BubbleStorage bubble;

    bubble.add_data(size);
    bubble.display_data();


【问题讨论】:

【参考方案1】:

BubbleStorage 是一个模板类,需要一个模板参数。

试试

BubbleStorage<int> bubble;

同样给出这个模板参数,确保在你的类函数中你不假设“int”或“double”甚至“MyClass”使用模板参数T。所以如果你想要一个向量的迭代器

vector<T>::iterator //or
vector<T>::const_iterator

add_data 中,您不应假设T 是可转换的。你应该有一个外部函数来随机获取Ts。鉴于这些问题,请确保您确实需要对 BubbleStorage 进行模板化。或者让add_data 使用T 而不是向量的大小。

【讨论】:

谢谢!我决定不使用模板,现在它工作得很好!

以上是关于缺少带有向量的模板参数的主要内容,如果未能解决你的问题,请参考以下文章

缺少 类模板 “deque“ 的参数列表和参数列表有两个或两个以上的形参

缺少 类模板 “deque“ 的参数列表和参数列表有两个或两个以上的形参

如何修复“UUID 类型的方法参数缺少 URI 模板变量 'uuid'”?

django 模板标签缺少 1 个必需的位置参数:值

无法正确扩展模板 - 父模板中缺少元素

Bash - 带有可选参数和缺少逻辑的函数