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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2011, 22:55   #1
Merovingian
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 30
По умолчанию Объект обобщенного класса

Не понимаю как создать объект обобщенного класса

Код:
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <vector>

using namespace std;

struct Edge
{
	//описание ребра графа
};

class GRAPH
{
	int Vcnt, Ecnt;
	bool digraph;
	vector <vector <bool> > adj;
public:
	GRAPH(int V, bool digraph = false) : adj(V), Vcnt(V), Ecnt(0), digraph(digraph)
	{
		for(int i= 0; i < V; i++)
			adj[i].assign(V, false);
	}
	int V() const{ return Vcnt; } // вершины
	int E() const{ return Ecnt; } // ребра
	bool directed() const { return digraph; } // орграф или нет
	void insert(Edge e)
	{
		//вставка ребра
	}
	void remove(Edge e)
	{
		//удаление ребра
	}
	bool edge(int v, int w) const
	{ return adj[v][w]; }

	class adjIterator;
	friend class adjIterator;
};

class GRAPH::adjIterator
{
	//Описание итератора
};

template <class Graph> // Здесь проблема!!!!!!!!!
class sPATH
{
	const Graph &G;
	vector <bool> visited;
	bool found;
	bool searchR(int v, int w)
	{
		if(v == w) return true;
		visited[v] = true;
		typename Graph::adjIterator A(G, v);
		for(int t = A.beg(); !A.end(); t = A.nxt())
			if(!visited[t])
				if(search(t, w)) return true;
		return false;
	}
public:
	sPATH(const Graph &G, int v, int w) : G(G), visited(G.V(), false)
	{ found = searchR(v, w); }
	bool exists() const
	{ return found; }
};



int main(int argc, char* argv[])
{
	int V = 50;
	GRAPH G(V);
	sPATH<GRAPH>::sPATH(G, 35, 43); // проблема И в этой строчке
	return 0;
}
см. ссылку на создание экземпляров класса шаблон при компиляции "sPATH<Graph>"
1> with
1> [
1> Graph=GRAPH
1> ]

Подскажите в чем проблема

Последний раз редактировалось Stilet; 20.09.2011 в 18:09.
Merovingian вне форума Ответить с цитированием
Старый 20.09.2011, 17:14   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
sPATH<GRAPH>::sPATH(G, 35, 43); // проблема И в этой строчке
а так?
Код:
sPATH<GRAPH> obj(G, 35, 43);
counter вне форума Ответить с цитированием
Старый 20.09.2011, 22:39   #3
Merovingian
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
Код:
sPATH<GRAPH>::sPATH(G, 35, 43); // проблема И в этой строчке
а так?
Код:
sPATH<GRAPH> obj(G, 35, 43);
И так попробовал, но выдает ту же ошибку

PHP код:
1>c:\users\денис\documents\visual studio 2010\projects\graph\graph\main.cpp(117): error C3861searchидентификатор не найден
1
>          c:\users\денис\documents\visual studio 2010\projects\graph\graph\main.cpp(111): при компиляции функции-члена "bool sPATH<Graph>::searchR(int,int)" класса шаблон
1
>          with
1
>          [
1>              Graph=GRAPH
1
>          ]
1>          c:\users\денис\documents\visual studio 2010\projects\graph\graph\main.cpp(136): смссылку на создание экземпляров класса шаблон при компиляции "sPATH<Graph>"
1>          with
1
>          [
1>              Graph=GRAPH
1
>          ]
1
Merovingian вне форума Ответить с цитированием
Старый 20.09.2011, 22:45   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
error C3861: search: идентификатор не найден
Не понимаю, что не ясно? Очевидно же, что вы ошиблись, и вместо рекурсивного вызова searchR обратились к несуществующей функции search, либо так и не определили необходимую ф-цию search.
netrino вне форума Ответить с цитированием
Старый 20.09.2011, 22:45   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Так. Это Chromium + быстрая отправка сообщения виноваты.
netrino вне форума Ответить с цитированием
Старый 20.09.2011, 22:49   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

весь код написан в одном файле? шаблон должен быть в отдельном хедере.
counter вне форума Ответить с цитированием
Старый 21.09.2011, 15:03   #7
Merovingian
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Не понимаю, что не ясно? Очевидно же, что вы ошиблись, и вместо рекурсивного вызова searchR обратились к несуществующей функции search, либо так и не определили необходимую ф-цию search.
Спасибо, бывает ведь такое, глаза замылятся, не мог найти)))
Merovingian вне форума Ответить с цитированием
Старый 21.09.2011, 15:04   #8
Merovingian
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
весь код написан в одном файле? шаблон должен быть в отдельном хедере.
нет, просто сюда скинул весь код
Merovingian вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
Параметр конструктора класса = объект этого класса nazavrik Общие вопросы C/C++ 6 14.02.2010 13:48
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? TwiX Общие вопросы Delphi 3 15.11.2009 00:54
арифметика класса + объект this Nitrino Общие вопросы C/C++ 4 19.10.2009 21:00