Re[2]: Странные ошибки из-за STL
От: Stanley Kay  
Дата: 19.09.02 06:37
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>"Работать замечательно" это никак не может. Этот код не должен компилироваться ни с 'using namespace std', ни без. Если он у тебя компилируется, то это действительно глюк компилятора.


Да да я извиняюсь. Просто я сначала писал шаблонный класс — не сработало, я подумал, что дело в шаблонах (VC++ не совсем хорошо с ними дружит) и уже начал писать вопрос в конфу, а потом обнаружил, что и без шаблонов не прет, а operator<< просто забыл переписать нормально. Короче вот точный код:

#include <iostream>
#include <vector>
using namespace std;

class A
{
public:
    friend std::ostream& operator<< (std::ostream& os, const A& a);
    friend bool operator < (A&, A&);
private:
    int m_i;
};


bool operator < (A& a1, A& a2)
{
    return (a1.m_i < a2.m_i);
}


std::ostream& operator<< (std::ostream& os, const A& a)
{
    os << a.m_i;
    return os;
}

void main()
{
}


И я по прежнему утверждаю, что VC++ выдает "error C2248: 'm_i' : cannot access private member declared in class 'A'". Но если я убираю "using namespace std;", то все компилиться без ошибок.
Далее хочу сказать, что operator<< и operator< я выбрал совершенно случайно, без всякого умысла, чисто для теста. И если, например, объявить (даже определять не надо) operator+ то компилер выдаст "fatal error C1001: INTERNAL COMPILER ERROR".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.