Archief - [PROG][C++] gebruik van static

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

servi

Legacy Member
Hoi , ik zit ondertussen al +/- een dag te klooien met een simpel voorbeeld te proberen runnnen, dit is mijn code :

DatabankLezer.cpp
Code:
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
stadfx.h
Code:
#pragma once

#define WIN32_LEAN_AND_MEAN        // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include "SqlLite.h"

Sqlite.h

Code:
class Db {
	private :
		static int huidigeRij;
    public : 
        void init();
};
Sqlite.cpp
Code:
void Db::init() {
    huidigeRij = 0;
}
Om een of andere reden wil dit in visual studio 2005 niet linken (compileren gaat perfect ), ik krijg dit als foutmelding :

Error 1 error LNK2001: unresolved external symbol "private: static int Db::huidigeRij" (?huidigeRij@Db@@0HA) SqlLite.obj

Wat is er fout ?
zodra ik er terug een gewone variabele van maak, wordt dit programma zonder problemen gemaakt.

Indien er van code niets fout is, het volgende heb ik al geprobeerd zonder resultaat :
- rebuild solution
- volledige map "Debug" verwijderd
- huidigeRij aanspreken als Db::huidigeRij = 0
- de klasse Db hernoemd (oorspronkelijk noemde ze Sqlite )

wat kan ik nog doen ?

killgore

Legacy Member
SqLlite.cpp:

int Db::huidigeRij = 0;

toevoegen ;).

Ge moet algemene initialisatie waarde hebben he.

servi

Legacy Member
heb ik al gedaan :

void Db::init() {
Db::huidigeRij = 0;
}

geeft hetzelfde resultaat. Normaal zou dat in principe zelfs niet moeten ( zolang er geen conflict is tussen een statische variabele en een objectvariabele )

edit : sorry was iets te voorbarig. Blijkbaar is het dat dat ik vergeten ben. :)
Curieus ik heb redelijk veel gezocht op "c++ static class tutorial" en geen 1 die dat vermeld.

Nou ja hoe dan ook, bedankt :applause:

killgore

Legacy Member
Bij mijn weten moet ge altijd uw statische klassen variabelen buiten klasse initialiseren of er wordt geen geheugen voor gereserveerd (waar die link fout dus op wijst ...).

edit: n/p dus :).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan