Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование, нет доступа 
V
    Опции темы
maxi91m
  Дата 27.9.2009, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



Что делаю не так, почему то не наследуется так как я думаю smile 
Есть программа для работы с векторами матрицами(которые постоерны из векторов) и не стандартными матрицами(верх треугольными итд)
Так вот есть class CMatrix{}; в нем есть перегруженые операторы такие как operator[] итд(пишу именно этот так как ошибка показывает на него) 
и от этого класса наследую CMatrixT : public CMatrix{}; который должен для своей работы использовать перегруженные операции из CMatrix +
какие то  свои. но как только встречается обращение к классу CMatrixT(ну там всякие функции операторы) и через него использование функций родительского класса возникает ошибка 

Ошибка    1    error C2247: нет доступа к "CMatrix<T>::operator []", поскольку "CMatrixT<T>" использует "private" для наследования из "CMatrix<T>"    d:\ннгу\яп\си\matrix_oper\matrix_oper\Form1.h    452    Matrix_Oper
Ошибка    2    error C2247: нет доступа к "CMatrix<T>::SetSizeMatr", поскольку "CMatrixT<T>" использует "private" для наследования из "CMatrix<T>"    d:\ннгу\яп\си\matrix_oper\matrix_oper\Form1.h    516    Matrix_Oper

что я делаю не так, вроде же наследую как public, и по сути должны быть доступны все методы родительского класса? но почему то он начинает говорить про какой то private хотя все методо объявлены в поле public

вот объявление классов может кто сразу увидит ошибку smile 

Код


#include <iostream>
template<class T>
class CMatrix{
    friend std::ostream& operator << <T>(ostream& , const CMatrix<T>&);
public:
    CMatrix(int size=5);//Конструктор инициализации
    ~CMatrix(){delete[] matr;}
    CMatrix(const CMatrix<T>&); //Конструктор копированния
    int& GetSize(){return size;}
public:
    CVector<T>& operator [](int _i) {return matr[_i];}
public:
    CVector<T>  operator[](int _i) const ;
    CMatrix<T>& operator =(const CMatrix<T>& );
    CMatrix<T>     operator *(const CMatrix<T>& );    
    void SetSizeMatr(int size_);
private:
    int size;
    CVector<T>* matr;
};     



Код

#include <iostream>
template<class T>
class CMatrixT : public CMatrix<T>{
    friend std::ostream& operator << <T>(ostream& , const CMatrixT<T>&);
public:
    CMatrixT(int size=5);
    ~CMatrixT(){delete[] matr;}
    CMatrixT<T> operator*(double in);
    CMatrixT<T> operator +(double in);
private:
    int size;
    CVector<T>* matr;
};    


--------------------
PM MAIL ICQ   Вверх
GoldFinch
Дата 27.9.2009, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



maxi91m, 
попробуй написать в CMatrixT 
using CMatrix<T>::operator[];
...

PM MAIL ICQ   Вверх
maxi91m
Дата 27.9.2009, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



Никакой реакции((
--------------------
PM MAIL ICQ   Вверх
zim22
Дата 27.9.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



maxi91m, в main.cpp я написал это:
Код

CMatrixT<int> cm;
cm[5];

и у меня всё работает.


--------------------
PM MAIL   Вверх
maxi91m
Дата 27.9.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



А у меня что то не работает(( Вот проект, глянте пиз когда будет время smile  

Проект
--------------------
PM MAIL ICQ   Вверх
zim22
Дата 27.9.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



maxi91m, Matrix_Oper.ncb файл не нужен. он только съел 2 метра моего траффика.
***
Код

class CMatrixT : CMatrix<T>

замени на 
Код

class CMatrixT : public CMatrix<T>


Это сообщение отредактировал(а) zim22 - 27.9.2009, 12:11


--------------------
PM MAIL   Вверх
maxi91m
Дата 27.9.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



Извините за трафик(у меня безлим просто 4мбит))
У меня так и написано, но ошибки

user posted image
--------------------
PM MAIL ICQ   Вверх
GoldFinch
Дата 27.9.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



омг когда я говорил написать "using CMatrix<T>::operator[];" я имел ввиду написать его внутри описания класса CMatrixT
Код

...
class CMatrixT : ...
{
public:
  using CMatrix<T>::operator[];
......

PM MAIL ICQ   Вверх
zim22
Дата 27.9.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(maxi91m @  27.9.2009,  12:19 Найти цитируемый пост)
У меня так и написано,

открой файл в блокноте CMatrixT.h из того архива, что ты выложил на скачку.
и смотри на строку номер пять до просветления.
***
ты пути не те указал к файлам. он считывает его отсюда: d:\ClassVM\classVM\CMatrixT.h

Это сообщение отредактировал(а) zim22 - 27.9.2009, 12:29


--------------------
PM MAIL   Вверх
maxi91m
Дата 27.9.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



Спасибо  zim22 за помощь, я сразу и не обратил внимание что неправильно переместил файл из прошлой работы) smile 
--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.