Problem s exception v Embeded Visual C 4.0

8 отговора 168 прегледа
#1

Problem s exception v Embeded Visual C 4.0

V konstruktora na edin klas hvurlyam exception i linkera dava greshka. suotvetnia kod v konstruktora e:

if (!pPointerToSelf)
pPointerToSelf = this;
else
throw "Only one instance of the class is allowed!";

pPointerToSelf e private static member.

linkera dava greshka "error LNK2001: unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)".
nyakoi znae li zashto se poluchava tova?
probvah da vklyucha exceptions i RTTI kato dobavih command line parameter /GX i /GR, no ne pomogna

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

Re: Problem s exception v Embeded Visual C 4.0

Проблема не е в exception-a
Някъде във cpp файла, в който си дефинирал класа добави следното:
MyClass *MyClass::pPointerToSelf = NULL ;
... и ще проработи....
М/у другото защо ти е да мяташ exception-и от конструктора

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

Re: Problem s exception v Embeded Visual C 4.0

niama li da e po-dobre ako konstruktora ne prawi nishto
a si imash edna funkcia GetInstance koiato syzdawa instance
i wryshta pointer ili ako e syzdadeno wryshta pointer...
BTW dumichkata "singleton" chuwal li si ia?

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

Re: Problem s exception v Embeded Visual C 4.0

Ако искаш да помогнeш на човека поне му обясни какво е singelton....

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

Re: Problem s exception v Embeded Visual C 4.0

Da, problemut naistina ne e v exceptiona, no ne e i tam kudeto ti predpolagash. Razbira se, che definiram static member-a.
Sushtia problem se poluchi, kogato vklyuchih virtualni metodi kum klasa. Na edin sait prochetoh, che VC ne suzdava vftable, ako konstruktora na suotvetnia klas ne se vika, taka che tozi link error tryabva da oznachava, che ne se suzdava vftable za klasa type_info.
ne moga da shvana kak da go nakaram da go generira, napravo me podludyava :))))

Редактирано от MishoM на

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

Re: Problem s exception v Embeded Visual C 4.0

Chuval sum ya, no ne mi haresva tova povedenie za konretniya sluchai. Iskam da zabranya suzdavaneto na nov instance na klasa, a ne da vurna staria. Zashtoto sled kato se suzdade klasa, se vurshat oshte raboti i ako programata raboti s veche suzdadenia obekt kato s nov, shte razrushi starite danni. T.e. iskam da prinudya programista naistina da raboti samo s edin instance na klasa i da ne go zabravya.

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

singleton

znachi oshte vednyz:
sys sigurnost ti triabva singleton

class Singleton
{
public:
Singleton* Instance ()
{
static Singleton s;
return &s;
}

private:
Singleton () {}
~Singleton () {}

};

taka nikoj ne moze da syzdade obekt ot tozi tip i e garantirano, che imash samo edna instancia, kojato shte se syzdade pri pyrvo poiskvane

ako iskash zivota na obekta da zapochva predi main, napravi go static chlen na klasa

Отговор
в отговор на shithit #8

Re: singleton

Vij, znam kakvo e singleton i v kraina smetka neshto podobno napravih. Ne beshe tova vuprosut mi, problemut mi e, che ne moga da nakaram kompilatora da podurja RTTI i exceptions. I btw tvoya kod nyama da raboti. Kato ne moje da se suzdade obekt ot tvoya Singleton klas s konstruktor, kak shte izvikash Instance()? Nali nyamash obekt, prez koito da izvikash metoda. Tryabva Instance() da bude static.

Отговор
в отговор на MishoM #9

Re: singleton

;-)
razbira se
nedogledal sym

Отговор