what the hell ...

6 отговора 410 прегледа
#1

what the hell ...

edin priqtel me izvika za pomo6t.
kompilira programka nqkakva vsi4ko e nared nqma gre6ki,
no kompilatora dava:
INTERNAL COMPILER ERROR C1001

naistina source code e bez gre6en, uverih se v tova 100 puti go
proverqvah - tova e sigurno.

Gre6kata e v definiciqta na klas i po to4no:

class X{
.
.
friend X operator+(X x, const X& y); // C1001 tuk dava gre6kata
friend X operator*(X x, const X& y); // ОК !
.
.
};

operator+ i operator* sa globalni f-ii.

Той е (приятелят ми) с VS 6.0. Казах му да си инсталира VS .NET.

Какви са вашите коментари по случая?

Отговор
в отговор на CObject #2

Re: what the hell ...

Компилаторът е бъгав, често се случва. Понякога се оправа след clean rebuild или като се разместят местата на функциите или се сменят header файловете.

VC 7.0 също дава Internal compiler errror но не толкова често и се оправя винаги след clean build (в моите случаи).

Отговор
в отговор на CObject #3

Re: what the hell ...

Не е лошо да сложите последния service pack (ако не сте):
[линк]

Отговор
в отговор на CObject #4

Re: what the hell ...

Не ми се вярва проблема да е в компилатора!
В MSDN-a при търсене с "C1001" има около 100-ина артикула с него, където се описва защо и кога и как може да се получи тази грешка.
Аз поне го пуснах твоя код с VC++ 6.0 и нямах проблем.
А това, че декларацията на операторите не ти е много коректна, да, но не се отнася до "C1001" проблема ти.
Коректната им декларация е:
X operator+(const X& x, const X& y);
X operator*(const X& x, const X& y);

Отговор
в отговор на ZZ #5

Re: what the hell ...

Tova zavisi ot realizaciqta na funkciite.
V slu4aq vida na prototipite trqbva da e to4no takuv.

Ina4e problema e re6en.

Zaradi nowiq format na hedurite i std prostranstwoto.
Ako izpolzvam
#include <iostream> // a ne #include<iostream.h>

to ne biva da vklu4vam vsi4ki imena ot std v globalnoto prostranstwo
using namespace std; // NE !!

ot tam idva problema.
Po princip C1001 izrazqva nevuzmojnostta na compilatora da opredeli gre6kata.

E 4ovek se u4i dokato e jiv

Отговор
в отговор на CObject #6

Re: what the hell ...

И защо, според теб, прототипа трябва да е точно такъв?

Отговор
в отговор на CObject #7

Re: what the hell ...

обикновенно има проблем с конструктора по подразбиране. често като лиспсва някоя скоба става така. същата грешка съм я виждал и при мен и при приятел и все е идвало от едно и също място.

Отговор