Помогите плиз, только начинаю изучать C++ ООП. Нужно разобраться с лабой. При компиляции:
| Код | //==============Файл lab9_2.h – інтерфейси класів=======================\\
class array //клас масив { public: char name[10]; //ім’я масиву array(); //конструктор virtual void show(); //відображення атрибутів об’єкта }; //////////////////////////////////////////////////////// клас вектор /////////////////////////////////////////////////// class vector:public array { public: int mas[5]; //компоненти вектора int row; //кількість компонентів vector(); //конструктор vector(int number_element); //перевантажений конструктор virtual void show(); //відображення атрибутів об’єкта }; ///////////////////////////////////////////////// клас матриця ////////////////////////////////////////////////////////////// class matrix:public vector { public: int matr[5][5]; //елементи матриці int column; //кількість стовпчиків, кількість рядків успадковується з класу вектор matrix(); //конструктор matrix(int number_column); //перевантажений конструктор virtual void show(); //відображення атрибутів об’єкта void mult(vector &v); //множення матриці на вектор void add(matrix &other_matr); //додавання матриць };
|
| Код | //===============Файл lab9_2.срр - реалізація класів =====================\\
#include <iostream.h> #include <stdio.h> #include <string.h> #include "lab9_2.h" int flag=0; //прапорець для визначення типу виведення атрибутів array::array() //конструктор ініціалізації атрибутів класу array { cout<<"enter name of object"<<endl; gets(name); } //////////////////////////////// відображення атрибутів об’єкта ////////////////////////////////////////////////// void array::show() { cout<<name; }
//////////////// конструктор об’єкта vector, посилається на конструктор об’єкта array //////////// vector::vector():array() { puts("enter size of column-vector"); cin>>row; //уведення кількості компонентів вектора cout<<"enter "<<row<<" values of column-vector "<<endl; for(int i=0;i<row;i++) cin>>mas[i]; //уведення значення компонентів } /////////конструктор об’єкта vector, посилається на конструктор об’єкта array ////////////////// vector::vector(int number_row):array() { row=number_row; } /////////////////////////////// метод відображення атрибутів об’єкта ///////////////////////////////////////// void vector::show() { cout<<"vector atributes: name="; array::show(); cout<<" row="<<row<<endl; cout<<" values of column-vector:"<<endl; for(int i=0;i<row;i++) cout<<mas[i]<<endl; } ///////////////////////////// метод додавання матриць ///////////////////////////////////////////////////////// void matrix::add(matrix &other_matr) { //визначення можливості додавання if ((row==other_matr.row)&&(column==other_matr.column)) for(int i=0;i<row;i++) for(int j=0;j<column;j++) matr[i][j]+=other_matr.matr[i][j]; else { cout<<"adding is impossible"<<endl; flag=1; } //ознака неможливості додавання } ///////////////////////////////// метод множення матриці на вектор ////////////////////////////////////////////// void matrix::mult(vector &v){ vector result(column); //об’єкт результату множення if(v.row==column) //умова можливості множення { for (int i=0;i<row;i++) { result.mas[i]=0; for(int j=0;j<column;j++) result.mas[i]+=matr[i][j]*v.mas[j]; } } else cout<<"multiplication is impossible"<<endl; result.show(); //відображення результатів множення }
///////////////////////////////////// конструктор матриці //////////////////////////////////////////////////////////// matrix::matrix(int number_row):vector(number_row) { char answer; //символ-відповідь на питання про необхідність уведення даних cout<<"do you want to enter row ?y/n:"; cin>>answer; if (answer=='n') //якщо кількість рядків не вводиться, то вона успадковується { cout<<"row is defined by vector"<<endl; row= number_row; } else //потрібне введення нового значення кількості рядків { cout<<"enter row of matrix: "; cin>>row; } cout<<"enter column of matrix"<<endl; cin>>column; //уведення кількості стовпчиків cout<<"enter "<<row<<"*"<<column<<" values of object's elements "<<endl; for(int i=0;i<row;i++) //уведення елементів матриці for(int j=0;j<column;j++) cin>>matr[i][j]; } ////////////////////////////////// тестова програма //////////////////////////////////////////////////////////////// void main() { puts("inheritance -lab9_2"); vector vec; vec.show(); //конструювання вектора та відображення його атрибутів int size_row=vec.row; //формування аргументу для конструктора об’єкту матриці cout<<"matrix1: "; matrix mat1(size_row); //конструювання матриці mat1.show(); //відображення матриці cout<<"matrix2: "; matrix mat2(size_row); mat2.show(); //конструювання матриці та її відображення mat1.add(mat2); //додавання матриць if(flag==0) { cout<<"result of matrix adding"<<endl; mat1.show(); } cout<<"vector: result of multiplication matrix by vector"<<endl; mat1.mult(vec); getchar(); //множення матриці на вектор, затримка зображення }
|
Выскакивает ошибка:
lab9_2.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall matrix::show(void)" (?show@matrix@@UAEXXZ) Debug/lab9_2.exe : fatal error LNK1120: 1 unresolved externals
В чем проблема? |