4

I am after two things. I first want to typedef the vector class to something a little more meaningful such as List. I tried the following but it gave me a compile error:

template <typename T>
typedef vector<T> List<T>

Secondly I want to override the << operator of the vector class, but I have no idea how I would go about it without creating a new class.

This may seem counter-productive but my end aim is to have something that non-programmers (or people that haven't done c++ before) can read that makes semantic sense.

4

2 に答える 2

6

これを行うと、プログラマー以外はコードを読むことも、変更することもできなくなります。ただし、C++ プログラマーもコードを読むのに苦労します。

コーディングができず、C++ プログラマーにコーディングしてもらう必要がある場合は、最初の C++ プログラマーが書いたコードを理解し、維持し、拡張する C++ プログラマーが必要になります。

OTOH、彼らが C++ でコーディングする必要があるとしたら、驚きです! — 彼らは C++ コードの書き方と読み方を学ばなければなりません。

その間には本当に何もありません。

于 2012-04-16T12:57:12.370 に答える
5

C++ にはテンプレートはありませんが、C++11 では代わりにtypedef使用できます。using

template<class T>
using List = std::vector<T>;
// ...
List<int> foo; // aka std::vector<int> foo;

演算子のオーバーロードは、クラスを変更せずに実行できます。

template<class T>
std::vector<T>& operator<<(std::vector<T>& vec, const T& value) {
  vec.push_back(value); // or whatever you want to do.
  return vec;
}

のクラス定義の外でも、どこかに置くだけで動作するはずですstd::vector

于 2012-04-16T12:08:47.333 に答える