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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2017, 19:02   #1
ilw
Пользователь
 
Регистрация: 16.11.2017
Сообщений: 14
По умолчанию Шаблоны: ошибки: requires template argument list или undeclared identifier - C++

Есть маленький тестовый проект из 4-файлов.
Что мне надо - рассказывать словами замучаюсь, взляните пожалуйста на код по ссылке ниже (он с комментариями).
Если коротко, проблема в объявлении шаблонного класса , у которого tempate - тоже шаблонный класс, и есть некоторые нюансы, о которых ниже.

Мне нужно чтобы здесь не было ошибок:
- ClassInHeaderOnly<SourceEncoding> *headerOnly;
или
- 'SourceEncoding': undeclared identifier


Обязательное условие, в test1.h нельзя инклудить headeronly.h .
Инклудить headeronly.h можно только в test1.cpp.

Как объявить шаблонный класс ?
Или может по другому решить проблему с динамическим указателем?
ilw вне форума Ответить с цитированием
Старый 27.11.2017, 20:24   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Читайте про forward declaration.
waleri вне форума Ответить с цитированием
Старый 27.11.2017, 20:26   #3
ilw
Пользователь
 
Регистрация: 16.11.2017
Сообщений: 14
По умолчанию

Поконкретней, прочитаю и что , куда, зачем?
Мне в другом месте вообще сказали , что нельзя, вы отвечает туманно, я не знаю , как ориентироваться ...
ilw вне форума Ответить с цитированием
Старый 27.11.2017, 20:29   #4
ilw
Пользователь
 
Регистрация: 16.11.2017
Сообщений: 14
По умолчанию

Вы хоть смотрели код на гитхабе, или прочитали знакомое слово и сразу какой - то совет?
ilw вне форума Ответить с цитированием
Старый 28.11.2017, 10:39   #5
ilw
Пользователь
 
Регистрация: 16.11.2017
Сообщений: 14
По умолчанию

Ап!
ilw вне форума Ответить с цитированием
Старый 28.11.2017, 13:29   #6
ilw
Пользователь
 
Регистрация: 16.11.2017
Сообщений: 14
По умолчанию

Сделал:
Код:
#ifndef VELO_TEST1_H
#define VELO_TEST1_H

#include <stdio.h>

template<typename SourceEncoding>
class ClassInHeaderOnly;

class Worked;

template<typename CharType = char>
struct UTF8;

class TestClass {
public:
    TestClass();
    virtual ~TestClass();
    void printHeaderOnlyClass();
private:
    ClassInHeaderOnly<UTF8<>> *headerOnly;
    Worked *worked;
};

#endif
ilw вне форума Ответить с цитированием
Старый 28.11.2017, 15:40   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Что собственно называется "forward declaration"...
waleri вне форума Ответить с цитированием
Старый 28.11.2017, 16:44   #8
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

waleri, надо было послать читать про объявление.
Croessmah вне форума Ответить с цитированием
Старый 28.11.2017, 20:14   #9
ilw
Пользователь
 
Регистрация: 16.11.2017
Сообщений: 14
По умолчанию

>Croessmah
Какое объявление?
ilw вне форума Ответить с цитированием
Старый 28.11.2017, 20:21   #10
ilw
Пользователь
 
Регистрация: 16.11.2017
Сообщений: 14
По умолчанию

И вообще то , forward declaration я еще и перед вопросом сделал (class Worked;, правда я ещё не знал терминологию, это скорее способ научтыка был), только не додумался, что еще можно подшаблон тоже декларировать. Я так и нигде не нашел кто так делает, и снова сам допер через научтык. Так что это скорее совет наобум, не принесший особой пользы, чем реальная конкретная помощь.
ilw вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Undeclared identifier 'cells' или 'text' при работе с Экселем voverrr Общие вопросы Delphi 5 24.02.2013 15:33
Undeclared identifier: 'AW' pashka_dos Общие вопросы Delphi 6 20.11.2012 18:02
Ошибка: error C2783: 'T __cdecl sumF(void)' : could not deduce template argument for 'T' julia9311 Общие вопросы C/C++ 6 04.07.2012 07:34
Export Template не активен... Или как делать шаблоны проектов? TwiX Visual C++ 2 03.10.2011 18:33
Undeclared identifier. Neroaz Помощь студентам 4 07.04.2010 20:29