Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2015, 15:50   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Шаблончик

Всем доброго дня !!

Подскажите пожалуйста в чем может быть проблема ?

когда блокирую cout в void fgl(Daza <T> &A) - то все нормально (((

void fgl(Daza <T> &); друг класса Daza
Код:
#include <stdio.h>
#include <conio.h>
#include<iostream>
 
using namespace std;
 
template <class T>
 
class Daza
 
{
    T x;
 
    template <class T>  
 
    friend void fgl(Daza <T> &);
 
 
public:
 
    Daza()  {}
 
    ~Daza() {}
 
 
 
    T nas() {return x;}
 
    void basa(T a) {x = a;}
 
    
};
 
 
 
int main()
 
{
 
     Daza <int> A;
 
     Daza <char> B;
 
      A.basa(4545);
 
      B.basa('N');
 
      printf("\n %d %c\n",A.nas(),B.nas());
 
      fgl(A);
 
 
 
      getch();
 
      return 0;
}
 
template <class T>
 
void fgl(Daza <T> &A)
 
{
    //cout<<"\n********* "<<A.x<<"\n";
 
    
}
наверное тут что-то нето

Код:
template <class T>  
 
    friend void fgl(Daza <T> &);

Последний раз редактировалось RAFA91; 18.05.2015 в 15:52.
RAFA91 вне форума Ответить с цитированием
Старый 18.05.2015, 17:22   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А если так написать?
Код:
cout<<"\n********* "<<A.nas()<<"\n";
pu4koff вне форума Ответить с цитированием
Старый 18.05.2015, 22:01   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

заменить:

Код:
class Daza
 
{
    T x;
 
    template <class T>  
 
    friend void fgl(Daza <T> &);
на:

Код:
class Daza
 
{
    T x;
 
    template <class U>  
 
    friend void fgl(Daza <U> &);
_Bers вне форума Ответить с цитированием
Старый 19.05.2015, 11:50   #4
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
А если так написать?
[/CODE]
увы тоже не работает.

Bers тоже не работает.

Код:
#include <stdio.h>
#include <conio.h>
#include<iostream>

using namespace std;

template <class T>

class Daza

{
	T x;

	template <class U>	

    friend void fgl(Daza <U> &);


public:

	Daza()  {}

	~Daza() {}



	T nas() {return x;}

	void basa(T a) {x = a;}

	
};



int main()

{

	 Daza <int> A;

	 Daza <char> B;

	  A.basa(4545);

	  B.basa('N');

	  printf("\n %d %c\n",A.nas(),B.nas());

	  fgl(A);



	  getch();

	  return 0;
}

template <class U>

void fgl(Daza <U> &A)

{
	cout<<"\n********* "<<A.nas()<<"\n";

	
}
--------------------Configuration: 2 - Win32 Debug--------------------
Compiling...
2.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(64) : error C2065: 'A' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(50) : see reference to function template instantiation 'void __cdecl fgl(class Daza<int> &)' being compiled
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(64) : error C2228: left of '.nas' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(50) : see reference to function template instantiation 'void __cdecl fgl(class Daza<int> &)' being compiled
Error executing cl.exe.

2.exe - 2 error(s), 0 warning(s)

Последний раз редактировалось RAFA91; 19.05.2015 в 11:55.
RAFA91 вне форума Ответить с цитированием
Старый 19.05.2015, 13:05   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

У меня все работает. У вас какая версия компилятора?
waleri вне форума Ответить с цитированием
Старый 19.05.2015, 13:55   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

версия 6.

должно работать в этой версии тоже.

где-то я что-то не дописал.

или написал какой-то бред

Код:
template <class U>	

    friend void fgl(Daza <U> &);
Код:
template <class U>

void fgl(Daza <U> &A)

{
	cout<<"\n********* "<<A.nas()<<"\n";

	
}
почему так работает

Код:
friend void fgl(Daza <T> &A);
а так нет

Код:
friend void fgl(Daza <T> &);
((( ?

Последний раз редактировалось RAFA91; 19.05.2015 в 15:46.
RAFA91 вне форума Ответить с цитированием
Старый 19.05.2015, 15:48   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Потому что нет имени переменной.

Шестая студия - 98 год, обновитесь уже, смысл сидеть в среде, которой более 15 лет...
waleri вне форума Ответить с цитированием
Старый 19.05.2015, 16:29   #8
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Потому что нет имени переменной.

..
В Борланде работает без строки
Код:
template <class T>
перед

Код:
friend void fgl(Daza<T> &);
почему борланд умнее Microsoft Visual C++ 6.0 ?

Код:
#include <stdio.h>
#include <conio.h>
#include<iostream.h>
 
 
 
template <class T>
 
class Daza
 
{
    T x;
 
    friend void fgl(Daza<T> &);
 
public:
 
    Daza()  {}
 
    ~Daza() {}
    
    T nas() {return x;}
 
    void basa(T a) {x = a;}
};
 
int main()
 
 
{
     Daza <int> A;
 
     Daza <char> B;
 
     clrscr();
 
      A.basa(4545);
 
      B.basa('N');
 
      printf("\n %d %c\n",A.nas(),B.nas());
      
      fgl(A);
      
      fgl(B);
      
      getch();
 
      return 0;
}
 
 
template <class T>
 
void fgl(Daza<T> &A)
 
{
    cout<<"\n***** "<<A.x<<"\n";
}
RAFA91 вне форума Ответить с цитированием
Старый 19.05.2015, 20:57   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Без friend не работает, потому что нет имени... с friend без разницы.
waleri вне форума Ответить с цитированием
Старый 20.05.2015, 13:10   #10
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

борланд 90 года умнее вижуала 6 ?
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть у кого такой шаблончик? GoldSteals Свободное общение 0 06.07.2013 15:34