2

我正在尝试创建一个将创建向量并在其上使用冒泡排序的类。一切都编译得很好,除非我尝试创建一个名为 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();

}
4

1 回答 1

2

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

尝试

BubbleStorage<int> bubble;

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

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

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

于 2013-09-15T18:38:23.103 回答