what the hell ...
6 отговора
410 прегледа
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.
Какви са вашите коментари по случая?
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.
Какви са вашите коментари по случая?
Re: what the hell ...
Компилаторът е бъгав, често се случва. Понякога се оправа след clean rebuild или като се разместят местата на функциите или се сменят header файловете.
VC 7.0 също дава Internal compiler errror но не толкова често и се оправя винаги след clean build (в моите случаи).
VC 7.0 също дава Internal compiler errror но не толкова често и се оправя винаги след clean build (в моите случаи).
Re: what the hell ...
Не е лошо да сложите последния service pack (ако не сте):
[линк]
[линк]
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);
В MSDN-a при търсене с "C1001" има около 100-ина артикула с него, където се описва защо и кога и как може да се получи тази грешка.
Аз поне го пуснах твоя код с VC++ 6.0 и нямах проблем.
А това, че декларацията на операторите не ти е много коректна, да, но не се отнася до "C1001" проблема ти.
Коректната им декларация е:
X operator+(const X& x, const X& y);
X operator*(const X& x, const X& y);
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
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
Re: what the hell ...
обикновенно има проблем с конструктора по подразбиране. често като лиспсва някоя скоба става така. същата грешка съм я виждал и при мен и при приятел и все е идвало от едно и също място.