|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.04.2011, 19:50 | #1 |
Пользователь
Регистрация: 21.11.2010
Сообщений: 14
|
Использование объектов класса потомка в классе предке
Всем привет! Имеется следующий код:
//A.h extern vector <ClassB> bVect; class A { protected: double x,y,z; public: void setZ(double z) { this->z=z; } double getZ() { return this->z; } double getXFromZ() { return x=bVect.at(0).getZ(); } }; //B.h class ClassB { protected: double z; public: void setZ(double z) { this->z=z; } double getZ() { return this->z; } }; //main.cpp #include "stdafx.h" #include <vector> #include <iostream> using namespace std; #include "B.h" #include "A.h" vector <ClassB> bVect; int _tmain(int argc, _TCHAR* argv[]) { ClassB objB; A objA; objB.setZ(10); bVect.push_back(objB); cout << objA.getXFromZ() << endl; system("pause"); return 0; } Все работает правильно. У нас есть вектор, содержащий объект класса ClassB. Мы добавляем в пустой вектор объект того же класса, содержащий в поле Z число 10. Потом через метод в классе А мы выводим это число. Проблема возникает тогда, когда мы класс ClassB делаем потомком класса А: //A.h class ClassB; extern vector <ClassB> bVect; class A { protected: double x,y,z; public: void setZ(double z) { this->z=z; } double getZ() { return this->z; } double getXFromZ() { return x=bVect.at(0).getZ(); } }; //B.h class ClassB: public A {/* protected: double z; public: void setZ(double z) { this->z=z; } double getZ() { return this->z; } */ }; //main.cpp #include "stdafx.h" #include <vector> #include <iostream> using namespace std; #include "A.h" #include "B.h" vector <ClassB> bVect; int _tmain(int argc, _TCHAR* argv[]) { ClassB objB; A objA; objB.setZ(10); bVect.push_back(objB); cout << objA.getXFromZ() << endl; system("pause"); return 0; } Компилятор выдает ошибку: Ошибка 1 error C2027: использование неопределенного типа ClassB" Ошибка 2 error C2228: выражение слева от ".getZ" должно представлять класс, структуру или объединение Что нужно сделать, чтобы все заработало? |
05.04.2011, 23:40 | #2 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 25
|
Попробуйте в файле A.h подключить ваш B.h.
Я думаю из-за этой части кода: Код:
Удел сильных - уделывать слабых
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
создание объектов в классе | V@mpire | Общие вопросы C/C++ | 3 | 30.05.2010 21:34 |
Как в базовом классе описать указатель на объект производного класса? | MasterGH | Общие вопросы C/C++ | 3 | 16.11.2009 02:55 |
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? | TwiX | Общие вопросы Delphi | 3 | 15.11.2009 00:54 |
Использование MediaPlayer в своем классе. | Вадим Буренков | Мультимедиа в Delphi | 5 | 03.04.2009 17:16 |
Использование String^ в классе | Selebro | Общие вопросы C/C++ | 2 | 01.12.2008 11:13 |