Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > глюк mingw? или глючу я? ошибка компилятора.


Автор: victor79 18.8.2013, 04:55
есть код:
Код

template <class T>
class A {
public:
    T prop;
    void meth1() { prop = 1; }
};

template <class T>
class B : public A<T> {
public:
    void meth2() {
                    meth1(); } // <- сюда указывает ошибка
};

int main() {
    B<int> b;
    b.meth2();
}

и есть компилятор mingw 4.6.2 и пробовал на 4.7.2.
Выдает ошибку:
Код

6.cpp: In member function 'void B<T>::meth2()':
6.cpp:12:27: error: there are no arguments to 'meth1' that depend on a template parameter, so a declaration of
 'meth1' must be available [-fpermissive]
6.cpp:12:27: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclare
d name is deprecated)

Причем, если убрать template, и есть А, и от него наследуется B, так же как в примере, то ошибки нету.
Вот и вопрос: глючу я или глючит компилятор?

так же, если ошибочную строку заменить на:
Код

A<T>::meth1();

тогда ошибки не возникает.

Автор: mes 18.8.2013, 12:36
Цитата(victor79 @  18.8.2013,  03:55 Найти цитируемый пост)
Вот и вопрос: глючу я или глючит компилятор?

не компилятор smile

первое с гугля : http://eli.thegreenplace.net/2012/02/06/dependent-name-lookup-for-c-templates/

Автор: victor79 20.8.2013, 03:29
спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)