1

たとえば、3 つの異なるオブジェクト a、b、および c があります。それぞれが異なるクラスのインスタンスです。std::vector 配列を引数として取る関数を宣言したいと思います。ここで、ベクトル配列は、オブジェクト a、b、または c (混在していない) の配列です。これどうやってするの?

私のコード:

//TODO: make this work for any vector array in the program;
bool assert_choice (std::vector<?> array) { //asserts that choice is valid 
    std::cout << "ohai" << std::endl;
    return true;
}

引数を宣言する方法がわかりません。

4

3 に答える 3

2

関数テンプレートを使用します。

template< class T >
bool assert_choice( std::vector<T> array )
{
    //...
}

参照渡しstd::vector<T> &またはconst std::vector<T> &.

于 2013-06-10T00:27:34.300 に答える
1

a, b,cを例として使用していて、渡したい唯一の型ではないと仮定すると、ベクトルではなく反復子のペアで渡します。

template <class Iter>
bool assert_choice (Iter first, Iter last) { ... }

このアプローチでは、必要なインターフェイスを満たすすべての型を正常に渡すことができます。

于 2013-06-10T00:33:39.197 に答える