私はと呼ばれる機能を有している#include <algorithm>
を使用することを関数と同じ名前の変数を使用するにはどうすればよいですか?
template<class T1, class T2, int max>
class Collection{
T1 * _elementi1[max];
T2 * _elementi2[max];
int currently;
public:
Collection() {
for (size_t i = 0; i < max; i++) {
_elementi1[i] = nullptr;
_elementi2[i] = nullptr;
}
currently = 0;
}
~Collection() {
for (size_t i = 0; i < max; i++) {
delete _element1[i]; _element1[i] = nullptr;
delete _element2[i]; _element2[i] = nullptr;
}
}
T1 ** GetT1() { return _element1; }
T2 ** GetT2() { return _element2; }
int GetCurrent() { return currently; }
void Add(T1 t1, T2 t2) {
if (currently == max)
{
throw exception("MAX SIZE REACHED");
}
_element1[currently] = new T1(t1);
_element2[currently] = new T2(t2);
++currently;
}
friend ostream& operator<< (ostream &COUT, Collection&obj) {
for (size_t i = 0; i < obj.currently; i++)
COUT << *obj._element1[i] << " " << *obj._element2[i] << endl;
return COUT;
}
};
Max
は、コレクションの容量を(愚かな私が知っている...)の問題を制限するために使用される次の属性/クラスと与えられたテンプレートクラスをされていmax
も同様である。私は変数Intellisenseを使用するたびに、コンパイラは変数の代わりに関数を使用します。変数max
を使用するようにコンパイラに指示しますが、関数は使用しません。
また、コードの改善やその他の提案を提出する前に、変数の名前の変更や変更が許可されていない試験の例を参考にしてください。
"と表示されているものを追加することは許可されています。" - 削除する方が良いと思います。 –
先生にここで何をするか教えてください。最も簡単な解決策は、名前を「最大」に変更することですが、これが教師によって明示的に禁止されている場合は、問題にする必要があります。 – GManNickG
'using namespace std;'を使用しないでください。そうすれば、あなたは 'max'と' std :: max'を持ちます。 – gurka