DU5 error

Úvodní kurz překladačů se soustřeďuje zejména na teoretické i praktické základy konstrukce přední části překladače. Součástí předmětu je i cvičení zaměřující se na základy práce s nástroji pro konstrukci překladačů. Po absolvování tohoto kurzu bude posluchač schopen sestrojit vlastní překladač do mezikódu nebo jiného jazyka.
faymon

DU5 error

Příspěvek od faymon »

Tak jsem zkusil přeložit projekt k dú5 a skončilo to následujícím errorem, který je v abstract_ic.cpp, což je soubor označený jako read only.
Máte to někdo taky? A co s tím děláte?

Kód: Vybrat vše

1>abstract_ic.cpp
1>..\..\..\public-ro\common\src\abstract_ic.cpp(25) : error C2593: 'operator ==' is ambiguous
1>        ..\literal_storage.hpp(35): could be 'bool mlaskal::operator ==<T,true>(const mlaskal::cptr_lit_storage<T,ISID> &,const mlaskal::cptr_lit_storage<T,ISID> &)' [found using argument-dependent lookup]
1>        with
1>        [
1>            T=std::string,
1>            ISID=true
1>        ]
1>        ..\literal_storage.hpp(43): or 'bool mlaskal::operator ==<T,true>(const mlaskal::cptr_lit_storage<T,ISID> &,const mlaskal::cptr_lit_storage<T,ISID> &)' [found using argument-dependent lookup]
1>        with
1>        [
1>            T=std::string,
1>            ISID=true
1>        ]
1>        while trying to match the argument list '(mlaskal::cptr_lit_storage<T,ISID>, mlaskal::cptr_lit_storage<T,ISID>)'
1>        with
1>        [
1>            T=std::string,
1>            ISID=true
1>        ]

JANIK_

Re: DU5 error

Příspěvek od JANIK_ »

Mam rovnaky problem. Nasiel si riesenie?
JANIK_

Re: DU5 error

Příspěvek od JANIK_ »

Odstarnit sa to da celkom jednoducho avsak upravou read only zdrojku literal_storage.hpp staci spravit z friend operatora== membra vid. cast upraveneho suboru:

Kód: Vybrat vše

	template <typename T, bool ISID>
	class cptr_lit_storage {
	public:
		cptr_lit_storage() : ptr_(0) { }
		cptr_lit_storage(const T* ptr) : ptr_(ptr) { }
		const T& operator*() const { return *ptr_; }
		bool operator!() const { return !ptr_; }
		const T* operator->() const { return ptr_; }
	private:
		const T*	ptr_;

	//	template <typename TT, bool ISIDISID>
	//	friend bool operator==(const cptr_lit_storage<TT, ISIDISID> &lhs, const cptr_lit_storage<TT, ISIDISID> &rhs);
		template <typename TT, bool ISIDISID>
		friend bool operator!=(const cptr_lit_storage<TT, ISIDISID> &lhs, const cptr_lit_storage<TT, ISIDISID> &rhs);
		template <typename TT, bool ISIDISID>
		friend bool operator!=(const TT *lhs, const cptr_lit_storage<TT, ISIDISID> &rhs);
	public:
		bool operator==(const cptr_lit_storage<T, ISID> &rhs) { return ptr_==rhs.ptr_; }
	};

	//template <typename T, bool ISID>
	//bool operator==(const cptr_lit_storage<T, ISID> &lhs, const cptr_lit_storage<T, ISID> &rhs) { return lhs.ptr_==rhs.ptr_; }
	template <typename T, bool ISID>
	bool operator!=(const cptr_lit_storage<T, ISID> &lhs, const cptr_lit_storage<T, ISID> &rhs) { return lhs.ptr_!=rhs.ptr_; }
	template <typename T, bool ISID>
	bool operator!=(const T *lhs, const cptr_lit_storage<T, ISID> &rhs) { return lhs!=rhs.ptr_; }
JANIK_

Re: DU5 error

Příspěvek od JANIK_ »

Takze potvrdene od Yaghoba ze sa jedna sa o chybu prekladaca MSVC 2005.
Na kontrolu DU bude pouzity novsi prekladac ktory zvladne friend sablony funkcii.
Teda riesenie je prejst na novsi prekladac alebo pripadne si upravit subor ako som popisoval hore.
faymon

Re: DU5 error

Příspěvek od faymon »

Nenašel jsem žádný uspokojivý. Taky jsem psal Yaghobovi, ten mi odpověděl s tím, že jemu to přeložit jde. Já to v žádným VS doteď nepřeložil ať dělám co dělám.
Modifikovat ten jejich soubor asi nebude moc legální, jedině si to upravit pro sebe a až to bude hotové tak to vrátit jak to bylo původně. Ale to asi taky nemusí skončit dobře.
JANIK_

Re: DU5 error

Příspěvek od JANIK_ »

V MSVC 2010 sa mi to prelozi ok bez dalsich uprav. Problem uvedeny hore je sposobeny len tym ze 2005 nevie sablony spriatelenych fcii. Tu upravu som poslal aj Yaghobovi a ten ju odobril ze by neamla nic rozbit a ze ju mozem puzit.
Uživatelský avatar
hkvm
Matfyz(ák|ačka) level II
Příspěvky: 50
Registrován: 3. 6. 2008 20:45
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Re: DU5 error

Příspěvek od hkvm »

Hlavně dejte pozor, ať to odevzdáte včas – deadline je sice do 30.12. (14:00), ale od zítřka od 18:00 nepůjde SIS.
faymon

Re: DU5 error

Příspěvek od faymon »

Taky jsem na to koukal no. Pokud to budu mít hotové do toho 30.12. 14:00 tak mu to pošlu na mail, když nejde sis tak nejde sis a co mám asi dělat jinýho. Ale stejně pochybuju že to budu mít včas, tak si myslím že tyhle starosti můžu úplně pustit z hlavy.

JANIK_
Tak jestli to Yaghob odsouhlasil, tak to nechám a nebudu to řešit.
Odpovědět

Zpět na „SWI098 Principy překladačů“