Нам дали test-main для нашего собственного 3-float Vector-класса под названием "Vec3f", который должен был быть реализован с помощью массива. После этого нам сказали преобразовать его в общий векторный класс для любого типа данных и N´s.
Предполагалось, что test-main для этого класса останется прежним, нам сказали, чтобы он запускался с использованием псевдонимов.
Тестовый класс учителей работает с утверждениями, и в этом проблема.
Класс 3 float Vector назывался Vec3f, и он был заменен на Vec в общем.
Например:
cout << " value type and dimension: ";
assert((typeid(Vec3f::value_type).name() == typeid(float).name()));
assert((Vec3f::dimension == 3));
cout << "passed." << endl;
Пока все хорошо, но после объявления псевдонимов для общего: "using Vec3f = Vec<float,3>;"
Выдает много ошибок утверждения.
"В классе Vec <3, float> нет ни одного члена с именем" value_type "или" dimension ". Ошибка 0135
Или это говорит, что assert не определен должным образом. Конечно я включил cassert.
Мы должны использовать только массив std. Больше никаких переменных. Поэтому я не могу объявить value_type и измерение ....
Иногда даже говорится, что cout неоднозначен, я понятия не имею, почему. Спасибо за помощь. Stackoverflow что-то делает с inlcudes, поэтому я выбросил их sry.
«Начало основного класса без включений»
//using namespace my;
using namespace std;
void test_Vec() {
using Vec3f = Vec<float,3>;
ifndef NDEBUG
cout << "======================" << endl;
cout << " Testing Vec " << endl;
cout << "======================" << endl;
{
cout << " value type and dimension: ";
assert((typeid(Vec3f::value_type).name() == typeid(float).name()));
assert((Vec3f::dimension == 3));
cout << "passed." << endl;
}
.......