Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Conflicting declaration при предварительным объявлением класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан двумерный массив. Удалить из него все столбцы с s-го по q-й http://www.cyberforum.ru/cpp-beginners/thread751867.html
Помогите! Дан двумерный массив.Удалить из него: 1)все столбцы с s-го по q-й(s<=q) 2)все строки с четными номерами(на сколько уменьшится количество строк?) 3)все столбцы,номер которых кратен 3(на...
C++ Вычислить значение выражения Есть алгоритм, нужно написать к нему программу с использованием рекурсии. Вопрос: что делает такой алгоритм и как его описать в коде? http://www.cyberforum.ru/cpp-beginners/thread751864.html
C++ Некорректная работа cin.fileget()
Здорова господа!!! Пытаюсь разобраться с потоками ввода/вывода вот есть код: #include <iostream> using std::cout; using std::endl; using std::cin; int main()
Вычислить произведение отрицательных элементов массива C++
Помогите пожалуйста! Надо написать программу в виде функций. Но я себе это как то слабо представляю. Вод задания: В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1.)...
C++ Дана строка, нужно символ в этой строке заменить ее порядковым номером. http://www.cyberforum.ru/cpp-beginners/thread751796.html
2) дана строка, нужно символ в этой строке заменить ее порядковым номером. помогите пожалуйста.
C++ Нужно инвертировать вторую половину строки. 1) нужно инвертировать вторую половину строки. помогите пожалуйста. подробнее

Показать сообщение отдельно
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130

Conflicting declaration при предварительным объявлением класса - C++

03.01.2013, 16:29. Просмотров 1008. Ответов 8
Метки (Все метки)

Здравствуйте! Есть проблема при компиляции кода который использует forward declaration для избежания зацикливания хедеров, код выглядит приблизительно следующим образом:

header_b.h
C++
1
2
3
4
5
6
class A; // here is a problem
 
class B {
    opearator const A *();
    // some code ....
};
header_a.h
C++
1
2
3
4
5
6
7
8
template <typename T>
class base_A {
    // class declaration
    // ...
};
 
typedef base_A<type1> some_new_type;
typedef base_A<type2> A;  // here is a problem!!
file_b.cpp
C++
1
2
3
4
5
6
7
#inlcude "header_a.h"
 
B::opearator const A*() {
    // here use the class A
    // some code
    // ...
}
Пробовал заменить:
C++
1
typedef base_A<type2> A;
на
C++
1
class A :public base_A<type2> {};
В таком случае пишет что нет подходящего конструктора:
D:\Dropbox\source\cml\characters.h: 602: error: no matching function for call to 'cml::base_string<wchar_t>::base_string()'
Вот как это всё выглядит в реальном коде:
0
Миниатюры
Conflicting declaration при предварительным объявлением класса  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru