abonnement Unibet Coolblue Bitvavo
pi_134141594
Zie ook http://www.parashift.com/c++-faq/const-correctness.html overigens, sowieso een aanrader van een site.
More oneness, less categories
Open hearts, no strategies
Decisions based upon faith and not fear
People who live right now and right here
  woensdag 11 december 2013 @ 20:31:13 #27
189216 netolk
maar dan andersom
pi_134162416
quote:
0s.gif Op vrijdag 6 december 2013 21:38 schreef robin007bond het volgende:
Op de een of andere manier gaat OOP mij moeilijker af in C++ dan in Java. De header-files vind ik zo'n zooitje.

Als ik een C+=2 zou maken zouden die header files er definitief uit mogen. :P
Nja, als je gewoon fatsoenlijk je header files bouwt vind ik ze wel beter dan die packet troep in java
Beware of the Raping Zebra's
pi_134163099
Je kunt ook gewoon alles in de header plempen. Maakt het niet echt overzichtelijker, behalve misschien wanneer je templates gebruikt. Compilen duurt alleen wel wat langer dan.
pi_134168690
quote:
0s.gif Op vrijdag 6 december 2013 21:38 schreef robin007bond het volgende:
Op de een of andere manier gaat OOP mij moeilijker af in C++ dan in Java. De header-files vind ik zo'n zooitje.

Als ik een C+=2 zou maken zouden die header files er definitief uit mogen. :P
Dat kan in gewoon C++ ook prima. Als je het eens probeert in een iets groter project zie je ook meteen waarom ze beter wel gebruikt worden ;)
More oneness, less categories
Open hearts, no strategies
Decisions based upon faith and not fear
People who live right now and right here
pi_134170848
quote:
2s.gif Op woensdag 11 december 2013 22:03 schreef trancethrust het volgende:

[..]

Dat kan in gewoon C++ ook prima. Als je het eens probeert in een iets groter project zie je ook meteen waarom ze beter wel gebruikt worden ;)
Ik weet dat het kan, maar dan wordt het snel een rotzooitje. :P

Plus dat je methodes in een goede volgorde moeten staan.
pi_134171511
quote:
0s.gif Op woensdag 11 december 2013 22:31 schreef robin007bond het volgende:

[..]

Ik weet dat het kan, maar dan wordt het snel een rotzooitje. :P

Plus dat je methodes in een goede volgorde moeten staan.
Dus je vindt het met en zonder header-files een zooitje?
More oneness, less categories
Open hearts, no strategies
Decisions based upon faith and not fear
People who live right now and right here
pi_134171820
quote:
18s.gif Op woensdag 11 december 2013 22:38 schreef trancethrust het volgende:

[..]

Dus je vindt het met en zonder header-files een zooitje?
Eigenlijk wel.

Sorry. Het is eerder dat ik zelf moeite heb structuur aan projecten aan te brengen terwijl ik dat bij andere talen wel heb. Maar dit komt ook omdat ik niet veel ervaring heb met C++ in vergelijking met die andere talen denk ik.

Ik heb nog een goed boek hier waar ik eens doorheen moet.
pi_134177776
Ohja nu je het over boek hebt, ik zou Stroustrups nieuwe boek nog lezen...
  donderdag 19 december 2013 @ 17:07:24 #34
189216 netolk
maar dan andersom
pi_134455154
quote:
9s.gif Op woensdag 11 december 2013 22:41 schreef robin007bond het volgende:

[..]

Eigenlijk wel.

Sorry. Het is eerder dat ik zelf moeite heb structuur aan projecten aan te brengen terwijl ik dat bij andere talen wel heb. Maar dit komt ook omdat ik niet veel ervaring heb met C++ in vergelijking met die andere talen denk ik.

Ik heb nog een goed boek hier waar ik eens doorheen moet.
Java dwingt je idd echt om oop te doen. C++ totaal niet. Wat ik alleen wel echt schijt irritant vind aan Java is dat het geen pointers en references heeft. Ja ik weet ook waarom

Goed dit was mijn beklag over Java weer
Beware of the Raping Zebra's
pi_134460282
quote:
0s.gif Op donderdag 19 december 2013 17:07 schreef netolk het volgende:

[..]

Java dwingt je idd echt om oop te doen. C++ totaal niet. Wat ik alleen wel echt schijt irritant vind aan Java is dat het geen pointers en references heeft. Ja ik weet ook waarom

Goed dit was mijn beklag over Java weer
Alles in java is een pointer... behalve de fundamentele types (dacht ik?)
pi_134465251
quote:
0s.gif Op donderdag 19 december 2013 19:28 schreef t4rt4rus het volgende:

[..]

Alles in java is een pointer... behalve de fundamentele types (dacht ik?)
Onderwater wel idd :)
Robert Moog died for our synths
pi_134470188
quote:
0s.gif Op donderdag 19 december 2013 21:22 schreef Gehenna het volgende:

[..]

Onderwater wel idd :)
Boven water toch ook? Niet expliciet maar impliciet.

Maar euh, C++? :P
  donderdag 19 december 2013 @ 23:36:06 #38
189216 netolk
maar dan andersom
pi_134472020
quote:
0s.gif Op donderdag 19 december 2013 19:28 schreef t4rt4rus het volgende:

[..]

Alles in java is een pointer... behalve de fundamentele types (dacht ik?)
Theoretisch wel ja, maar het werkt toch niet (altijd) zoals ik het zou verwachten (en in C++ zeker wel aan de praat zou krijgen)

Ach project duurt nog maar een paar weekjes en dan ben ik er weer vanaf *O*
Beware of the Raping Zebra's
  dinsdag 29 april 2014 @ 16:54:19 #39
189216 netolk
maar dan andersom
pi_139379740
Even een vraagje:
Ik heb een vector iterator en die laat m'n programma crashen als ik iets toevoeg aan die vector.
Maar dat doet ie alleen als ik bepaalde fields van het object gebruik:

1
2
3
4
5
6
7
8
9
10
11
class InputField{
        std::string _DATA;
        unsigned short _X,_Y; // location
        unsigned short _DISPLAY_LENGTH;
        unsigned short _MAX_LENGTH; // 0 if no max length
        std::string _ONLY_ALLOWED; // empty if there are no restrictions for input
        bool _SELECTED;
        
        public:
            InputField(unsigned short x,unsigned short y,unsigned short display_length,bool selected=false,unsigned short max_length=0,std::string only_allowed="");
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class InputFieldController{
        std::vector<InputField> _INPUTFIELDS;
        std::vector<InputField>::iterator _SELECTED;
        
        public:
            void InputFieldController::push_back(InputField push){
                _INPUTFIELDS.push_back(push);
                if(push.getSelected()){
                    if(_INPUTFIELDS.size() == 1){
                        _SELECTED = _INPUTFIELDS.begin();
                        return;
                    }
                    _SELECTED->setSelected(false);
                    _SELECTED = _INPUTFIELDS.end()-1;
                }
            }
};
Als ik dit doe dan werkt het gewoon
1
2
3
4
myInputFields.push_back(InputField(12,1,35,true));
myInputFields.push_back(InputField(74,1,5));
myInputFields.push_back(InputField(29,2,50));
    

maar als ik dit probeer dan crashed ie
1
2
myInputFields.push_back(InputField(10,1,70,true));
myInputFields.push_back(InputField(28,3,2,false,2,"0123456789"));

Ik vermoed dus dat ie de string niet zo leuk vind maar ik begrijp niet waarom, kan iemand mij uitleggen waarom het niet werkt?
Beware of the Raping Zebra's
pi_139384017
quote:
0s.gif Op dinsdag 29 april 2014 16:54 schreef netolk het volgende:
Even een vraagje:
Ik heb een vector iterator en die laat m'n programma crashen als ik iets toevoeg aan die vector.
Maar dat doet ie alleen als ik bepaalde fields van het object gebruik:
[ code verwijderd ]

[ code verwijderd ]

Als ik dit doe dan werkt het gewoon
[ code verwijderd ]

maar als ik dit probeer dan crashed ie
[ code verwijderd ]

Ik vermoed dus dat ie de string niet zo leuk vind maar ik begrijp niet waarom, kan iemand mij uitleggen waarom het niet werkt?
Heb je ook nog errors?
  dinsdag 29 april 2014 @ 19:37:20 #41
189216 netolk
maar dan andersom
pi_139385493
quote:
0s.gif Op dinsdag 29 april 2014 19:01 schreef t4rt4rus het volgende:

[..]

Heb je ook nog errors?
Nee, alles compiled gewoon en dan APPCRASH. Dus dan krijg je zo'n popup ding van windows met dat het niet meer werkt.

Ik denk dus dat die iterator niet valid meer is maar ik snap dus niet waarom hij bij de andere wel gewoon valid is
Beware of the Raping Zebra's
pi_139385559
quote:
0s.gif Op dinsdag 29 april 2014 19:37 schreef netolk het volgende:

[..]

Nee, alles compiled gewoon en dan APPCRASH. Dus dan krijg je zo'n popup ding van windows met dat het niet meer werkt.

Ik denk dus dat die iterator niet valid meer is maar ik snap dus niet waarom hij bij de andere wel gewoon valid is
Ja dus wat is je error?

Segmentation fault?
Maar om dat te krijgen moet je ook iets dereferecen, dus wat doe je daarna?

-edit-

In het vervolg moet je even een testcase schrijven voor ons :)
http://ideone.com/RPGgAC

valgrind
quote:
==19390== Invalid write of size 1
==19390== at 0x4009AF: InputField::setSelected(bool) (foo.cxx:10)
==19390== by 0x400A31: InputFieldController::push_back(InputField) (foo.cxx:25)
==19390== by 0x400927: main (foo.cxx:35)
==19390== Address 0x0 is not stack'd, malloc'd or (recently) free'd
Je probleem is _selected->setSelected(false);
_selected wijst nergens naar, dus segmentation fault ;)

Dus wat je moet doen is eerst kijken of _selected ergens naar wijst.
Daarnaast als je een push_back doet hoeft je _selected ook al niet meer valid te zijn.

-edit- (nog geen reactie, dus ga ik maar even verder...)
Je kan hier beter geen iterator gebruiken, die dingen zijn om te iteraten niet om een element bij te houden in een vector.
Een index in de vector kan je wel bij houden, wordt het ook een stuk simpeler van.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct InputFieldController{
        std::vector<InputField> _inputfields;
        unsigned _select;
        
        void push_back(InputField field)
        {
            if(field.getSelected())
            {
                if(!_inputfields.empty())
                    _inputfields[_select].setSelected(false);
            }
            _inputfields.push_back(field);
            _select = _inputfields.size() - 1;
        }
};


[ Bericht 12% gewijzigd door t4rt4rus op 29-04-2014 21:05:53 ]
  woensdag 30 april 2014 @ 10:43:32 #43
189216 netolk
maar dan andersom
pi_139405034
quote:
0s.gif Op dinsdag 29 april 2014 19:38 schreef t4rt4rus het volgende:

[..]

Ja dus wat is je error?

Segmentation fault?
Maar om dat te krijgen moet je ook iets dereferecen, dus wat doe je daarna?

-edit-

In het vervolg moet je even een testcase schrijven voor ons :)
http://ideone.com/RPGgAC

valgrind

[..]

Je probleem is _selected->setSelected(false);
_selected wijst nergens naar, dus segmentation fault ;)

Dus wat je moet doen is eerst kijken of _selected ergens naar wijst.
Daarnaast als je een push_back doet hoeft je _selected ook al niet meer valid te zijn.

-edit- (nog geen reactie, dus ga ik maar even verder...)
Je kan hier beter geen iterator gebruiken, die dingen zijn om te iteraten niet om een element bij te houden in een vector.
Een index in de vector kan je wel bij houden, wordt het ook een stuk simpeler van.
[ code verwijderd ]

hmm, wat ik al vermoedde dus die _SELECTED is niet valid maar die iterators kunnen dus invalid worden als je iets toevoegd?
Dacht dat het eigenlijk gewoon soort van pointers waren met wat meer opties :X
Anyway bedankt denk dat ik idd dan maar een index bijhoud
Beware of the Raping Zebra's
pi_139428015
Vectors doen intern een allocatie om een bepaald aantal elementen op te kunnen slaan. Wanneer je elementen toevoegt, worden deze in dat stukje geheugen opgeslagen. Naarmate je meer elementen toevoegen, zal dit geheugen vol raken. Op dat moment zal de vector een groter stuk geheugen alloceren en alle oude elementen daarheen verplaatsen. Op dat moment worden iterators ongeldig.
pi_139454175
quote:
0s.gif Op woensdag 30 april 2014 10:43 schreef netolk het volgende:

[..]

hmm, wat ik al vermoedde dus die _SELECTED is niet valid maar die iterators kunnen dus invalid worden als je iets toevoegd?
Dacht dat het eigenlijk gewoon soort van pointers waren met wat meer opties :X
Anyway bedankt denk dat ik idd dan maar een index bijhoud
Ohja en misschien niet volledig hoofdletters gebruik in variabelen.
Lijkt net of je allemaal macro's gebruikt. :P
pi_139464547
Tvp, moet nu voor een vak aan Minix sleutelen, best leuk maar het kost zo veel tijd :(
  maandag 5 mei 2014 @ 07:33:19 #47
189216 netolk
maar dan andersom
pi_139575852
quote:
0s.gif Op donderdag 1 mei 2014 15:46 schreef t4rt4rus het volgende:

[..]

Ohja en misschien niet volledig hoofdletters gebruik in variabelen.
Lijkt net of je allemaal macro's gebruikt. :P
hmm, goed punt.
Meestal doe ik dat om aan te geven wat in een class staat en wat niet maar met macro's doe je idd het zelfde...
Beware of the Raping Zebra's
  vrijdag 23 mei 2014 @ 17:24:53 #48
189216 netolk
maar dan andersom
pi_140284315
Weet iemand hier hoe ik onder Windows (in console) een nieuwe screenbuffer kan maken waar std::cout << wel naar kan schrijven?

Ik heb nu een nieuwe buffer aangemaakt [daar kan ik ook naar schrijven via WriteConsoleOutput(...)]
Ook heb ik het volgende in m'n code:
1
2
3
SetStdHandle(STD_INPUT_HANDLE,hstdOut)
SetStdHandle(STD_OUTPUT_HANDLE,hstdOut)
SetStdHandle(STD_ERROR_HANDLE,hstdOut)
Alleen std::cout pakt hij nu dus niet.
De data die ik in std::cout stop word wel ergens heen geschreven want als ik de ActiveBuffer weer naar de originele terug zet verschijnt de data wel ineens.

moet ik nog iets ander doen dan SetStdHandle(...) of is die gewoon kapot bij minGW?
Beware of the Raping Zebra's
pi_140284807
C++ kent geen Windows. :P

Ho dat is wat ze in ##c++ altijd zeggen tegen dit soort vragen.

Maar geen idee. Even op cppreference.com kijken.

Waarom doe je dit eigenlijk?
En wat doe je precies?
  vrijdag 23 mei 2014 @ 22:28:36 #50
189216 netolk
maar dan andersom
pi_140294918
Op internet heb ik niks kunnen vinden er over.

Maar ik heb een soort van alert box gemaakt zodat ik meldingen kan geven maar daarna moet het oude scherm weer terug gezet worden (dus zonder de alert box er overheen getekend)
En ook om de buffer en grote van 80 bij 25 te geven zodat de scroll balk verdwijnt
Beware of the Raping Zebra's
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')