Inlägg

Inlägg som Debug har skrivit i forumet
Av Debug

Citerar mig själv från en annan tråd.

Skrivet av Debug:

Jag skriver på en surfplatta, så ha överseende.

Huruvida datorn klarar Skyrim på ultra med grafikförbättrande mods kan jag inte svara på, men datorn ska klara Skyirm på ultra (~48 fps med GTX 770m enligt benchmark, okänd upplösning). Enligt benchmarks specifikt för G750JX klarar datorn bl.a. BF3 på ultra med 1080p med 32.6 fps, och Tomb Raider med omkring 40 fps. Datorn klarar i princip alla titlar på höga grafikinställningar, och ganska många titlar med maxade grafikinställningar med spelbar fps.

Både kylning och ljudnivå verkar väldigt bra på JX. Köper du datorn utan SSD så rekommenderar jag att du köper till en.

Jag själv har beställt och inväntar G750JX.

http://www.notebookcheck.net/NVIDIA-GeForce-GTX-770M.88995.0.html
http://www.notebookcheck.net/Preview-Asus-G750JX-Notebook.93319.0.html

ASUS G750JX ligger på ca. 13000 kronor, beroende på ram och lagring.

Skickades från m.sweclockers.com

Av Debug

Jag skriver på en surfplatta, så ha överseende.

Huruvida datorn klarar Skyrim på ultra med grafikförbättrande mods kan jag inte svara på, men datorn ska klara Skyirm på ultra (~48 fps med GTX 770m enligt benchmark, okänd upplösning). Enligt benchmarks specifikt för G750JX klarar datorn bl.a. BF3 på ultra med 1080p med 32.6 fps, och Tomb Raider med omkring 40 fps. Datorn klarar i princip alla titlar på höga grafikinställningar, och ganska många titlar med maxade grafikinställningar med spelbar fps.

Både kylning och ljudnivå verkar väldigt bra på JX. Köper du datorn utan SSD så rekommenderar jag att du köper till en.

Jag själv har beställt och inväntar G750JX.

http://www.notebookcheck.net/NVIDIA-GeForce-GTX-770M.88995.0.html
http://www.notebookcheck.net/Preview-Asus-G750JX-Notebook.93319.0.html

Skickades från m.sweclockers.com

Av Debug

http://i.imgur.com/dqAo022.jpg

Min spelhörna! Eller, ja, så nära en spelhörna en fattig student som jag kan komma. Kan man kanske vinna med sympati? En riktig dator skulle sitta fint.

Av Debug
Skrivet av jonatan80:

sorry men... hur långt är ett snöre?

15-17 tum i5-i7 ?
spel-laptop med HD skärm ?.... i runda slängar 20lax eller mer
bläddra själv
http://www.netonnet.se/art/dator/laptop/anvandningsomrade/spe...

Tack för svar, och jag ber om ursäkt om jag var otydlig.

http://www.komplett.se/k/ki.aspx?sku=781756

Är den där datorn bra? Är den värd priser?

Skickades från m.sweclockers.com

Av Debug

Laptop som man kan spela på?

Hej!

Jag har alltid varit emot laptops och alltid propagerat för stationära datorer, men nu har jag hamnat i en sits där en stationär dator inte riktigt funkar, tyvärr.

Hur mycket får man betala om man vill kunna spela på laptop? Jag spelar mest WoW men jag skulle också vilja kunna spela andra, nyare spel med 1080p, men själva grafikinställningarna behöver inte vara så värst höga.

Jag behöver ingen laptop som jag lätt kan ta med, så jag offrar mer än gärna portabilitet för prestanda.

Har ni några tips? Vilken prislapp skulle det här hamna på?

Tack på förhand!

Skickades från m.sweclockers.com

Av Debug

Tack för alla svar!

Den där såg faktiskt väldigt intressant ut; det enda negativa verkar ju vara att det är ganska mycket "reklam" på tangentbordet. Men det kan jag ha överseende med.

Skrivet av hölmiz:

Gå och känn på olika brytare i någon butik! Det är en samksak vad man gillar! Gillar du "vanliga" tangentbord med rubberdome brytare så ska du nog ha röda brytare. Gillar du klickande tangentbord med mycket feedback så ska du ha blå

Jo, jag kanske tar och besöker inet faktiskt.

Röda alternativt bruna såg ju mest intressant ut. Hmm, jag får nog ta och försöka prova ett par tangentbord innan jag bestämmer mig. Är det någon som vet något billigt tangentbord med bruna switchar?

Av Debug

Tips om tangentbord (högst 700 kronor) och en fråga om mekaniska brytare

Hej!

Jag är ute efter ett nytt tangentbord då jag har använt mitt gamla HP-tangentbord i flera år nu. Jag skulle helst inte vilja lägga ut mer än 700 kronor, och allra helst inte ens det.

Jag behöver inte LED eller något annat trams, men jag skulle helst slippa numpaden då den bara är i vägen.

Jag har läst att mekaniska brytare ska vara bra och sköna att använda, borde jag skaffa det? Och isåfall, vilka brytare? Vad är det negativa och positiva för respektive brytare?

Tack på förhand!

Av Debug

Jag rekommenderar att gå random dungeon som någon annan skrev, även om du antagligen kommer att få BRD som är ganska jobbig, speciellt om det inte är någon i gruppen som inte kan instansen. När du är level 58 så ska du till Outland och levla i Hellfire Peninsula, när du är 60 så kan du gå till Zangarmarsh, och sedan vidare.

Av Debug
Skrivet av Zeuxlarsson:

Vid lvl60 så kan du endast flyga i Outland, alltså inte i Azeroth eller Kalimdor. För att flyga i de två sistnämnda så krävs level 85 samt att du pungar ut några tusen guld.

Nepp.

Skrivet av Zeuxlarsson:

Det jag skrev (tror jag) var det som gällde i cataclysm i alla fall men det kan ju såklart ha ändrats med mop.

Nepp.

Skrivet av RaW D Coy:

vid 58 kan man väl flyga? eller är det om man har köpt flying mount boken från en högre lvl?

Om man är en druid så kan man flyga i level 58, annars kan man inte det.

Av Debug

[A] Någon som spelar på Outland?

Precis gjort en warlock där; hur är servern för PvE? Verkar vara ganska mycket PvP där i trade och forumet, men inte mycket rekrytering för raids.

När jag ändå gör en tråd, någon som har lust att levla tillsammans? Är level 22 just nu.

Av Debug

Behöver nya komponenter!

Hej!

Jag skulle behöva några nya komponenter, men jag är ganska fattig så det får bli att köpa en del eller två i taget.

Just nu har ett ATi Radeon HD 46xx kort som jag fick köpa billigt för några månader sedan; spel har flutit på relativt bra faktiskt. Är det värt att köpa ett nytt kort för 500-1000 kronor? Notera att jag inte vill ha AMD som GPU, Catalyst har varit så dåligt så jag har bestämt mig för att bojkotta dem.

Jag har ett AMD Phenom 8550 som processor; ska jag uppgradera? Isåfall, vilket? Så billigt som möjligt, men vill ju att det ska vara värt köpet ändå.

Om jag ska köpa nya komponenter, behövs en ny PSU? Vet inte vad jag har för någon just nu, antagligen skit då jag köpte en färdig dator från HP.

Tänkte köpa ett nytt chassi (funderar på Fractal R4), behöver jag några nya fläktar då? Om ni vill ha bilder på datorn så kan ni få det, då jag inte riktigt vet vad som finns i den mer än det jag har listat upp.

Tack på förhand!

Av Debug
Skrivet av in2it:

Utan att du skriver ditt b-net konto så kan då ingen skicka något iaf...

Citera om du svarar någon.

Hur som helst så antog jag att man tog det genom PM, jag skulle helst inte vilja visa min mail här i tråden.

Av Debug

Någon som har en scroll? Vet inte om jag kan få den, men jag kan aktivera 10 dagars trial för Cata så det kanske funkar.

Av Debug
Skrivet av MrMadMan:

Det gör den ju inte till en dålig produkt... =/

Nä, produkten fanns ju aldrig.

Av Debug
Skrivet av Andreas D:

Det handlar inte om vem som var först utan om vem som äger patentet. Turligt nog har vi inte mjukvarupatent i Sverige.

Vad händer om ett svenskt företag tillverkar någon mjukvara som exempelvis Apple tycker är kopierat? Skulle de kunna bli dömda för något?

Av Debug

Introduktion till C++ och hur man använder Code::Blocks

Innehåll:

1.0 - Introduktion 1.1 - En snabb genomgång av Code::Blocks 1.2 - Grund för ett program 1.3 - Variabler 1.4 - Konstanter 1.5 - Operatörer 1.6 - I/O 2.0 - Funktioner och flödeskontrollering 2.1 - Flödeskontrollering 2.2 - Funktioner 3.0 - Datatyper 3.1 - Arrays 3.2 - Vektorer 3.3 - Pekare 3.4 - Datastruktur 4.0 - Objektorientering 4.1 - Klasser

1.0 - Introduktion

Den här guiden är avsedd för nybörjare och är menad att kunna förmedla det mesta en person bör kunna för att lära sig att programmera i C++.
Jag använder för tillfället Windows och guiden kommer således att vara bäst anpassad för det operativsystemet; det bör dock inte vara några problem med att använda det på Linux eller ett annat alternativt operativsystem. Tänk dock på att flera bibliotek, t.o.m. grundläggande sådana, kan vara beroende på operativsystemet.

Det här är bara en introduktion till språket, och det finns mycket mer att lära sig. Jag hänvisar vid varje kapitel och delkapitel till mer information om ämnet; den här guiden är bara avsedd för att sammanfatta språket för en nybörjare.

Genomgången av Code::Blocks kan hoppas över om du har en annan IDE eller om du redan vet hur man använder programmet.

1.1 - En snabb genomgång av Code::Blocks

Code::Blocks
Tänk på att välja GCC och mingw om du inte har någon kompilator!
Direktlänk.

Öppna Code::Blocks och gå till File -> New -> Project.

http://i.imgur.com/p0KcR.png

Välj Console application.

http://i.imgur.com/O3FAP.png

Välj ett namn för projektet och var det ska sparas.

http://i.imgur.com/DgzXE.png

För att kompilera och köra ett program, tryck på Build and Run.

http://i.imgur.com/PXgXr.png

Programmet kommer att se ut såhär:

http://i.imgur.com/E9JS4.png

1.2 - Grund för ett program

Jag kommer att skriva ett grundläggande och enkelt program i C++ nedan, jag kommer sedan att gå igenom alla olika delar i programmet del för del.

#include <iostream> int main() { std::cout << "Hello World!\n" << std::endl; return 0; }

* #include <iostream>
Den här raden inkluderar ett bibiliotek som heter iostream och är ett av biblioteken som hanterar in- och utdata. Den låter dig använda funktionen cout som skriver ut något på skärmen. Jag kommer att visa ett alternativ senare.

* int main()
Den här raden påbörjar huvudfunktionen (main) som alltid måste vara närvarande i ett program. Vad en funktion är kommer jag att gå igenom senare, det enda du behöver veta för tillfället är att funktionen main är en nödvändighet.

* std::cout << "Hello World!\n" << std::endl;
Den här raden skriver ut "Hello World!" på skärmen, std:: används för att komma åt funktioner eller objekt inom ett s.k. namespace. Begreppet namespace är överkurs och man kan välja att använda using namespace std; istället för att skriva std:: bakom varje funktion som kräver det, vissa argumenterar dock för att det är en dålig vana att inte använda std::.

Mer information om ämnet.

#include <iostream> using namespace std; int main() { return 0; }

* return 0;
Den här raden säger till funktionen main() att returnera 0; sålänge funktionen är av en speciell datatyp så måste funktionen returnera något. Nu är funktionen av datatypen int (integer, ett tal) således måste den returnera ett tal, som i det här fallet är 0.

* { }
Dessa tecken används för att öppna och stänga ett s.k. scope (räckvidd eller omfång). Detta innefattar bl.a. funktioner och flödeskontroller.

Några alternativa sätt att skriva en enkel grund, och ändå uppnå samma resultat, finns nedan.

#include <stdio.h> int main() { puts("Hello World!"); return 0; }

#include <iostream> using namespace std; void main() { cout << "Hello World!\n"; }

1.3 - Variabler

En variabel kan ses som en låda i en byrå som kan öppnas och stängas, man kan givetvis också lägga saker i lådan.

#include <iostream> #include <string> int main() { int x; //En variabel av datatypen int. std::string str; //En variabel av datatypen string. x = 5; str = "Hello!"; std::cout << x << " " << str; return 0; }

Programmet ovan kommer att skriva ut "5 Hello!".

* int x //En variabel av datatypen int.
Den här raden deklarerar variabeln x som är av datatypen int. Detta betyder att man bara kan lagra heltalsvärden i lådan, som t.ex. 5, eller 12, eller -105.
"//" används för att göra kommentarer; dessa kommentarer förändrar inte själva programmet utan är bara där för att göra det enklare att förstå koden, både för programmeraren och för andra som läser den.

* std::string str; //En variabel av datatypen string.
Den här raden deklarerar en variabel av datatypen string, det är med andra ord en sträng. Man kan också använda sig av char, jag föredrar dock att arbeta med dessa strängar så jag kommer att utgå från dessa i guiden.

#include <iostream> int main() { int x; std::cout << "Enter a number: "; std::cin >> x; std::cout << "\nYou entered: " << x; return 0; }

Det här programmet låter användaren initialisera variabeln x genom att använda cin (som används för att få input från användaren).

Exempel på output:

Enter a number: 5 You entered 5

Mer information om variabler.

1.4 - Konstanter

En konstant är, som namnet antyder, en variabel som inte går att ändra. Det finns två sätt att skapa en konstant; antingen med const datatyp eller #define.

#include <iostream> int main() { const int x = 5; //x är nu en konstant och kan inte ändras. x = 6; //Går inte! const int y; y = 5; //Går inte heller! }

#include <iostream> #define VAR 150 int main() { std::cout << VAR; //Skriver ut 150. VAR = 5; //Går inte! VAR är en konstant. return 0; }

Mer information om konstanter.

[U]1.5 - I/O[/U]

I/O eller In/Ut (Input/Output) syftar på funktioner man använder för att skriva ut information på skärmen eller låta användaren mata in information till programmet. Det finns två vanliga bibliotek för detta; iostream och stdio.

iostream

#include <iostream> int main() { std::cout << "Hello World!"; }

cout används för att skriva ut data på skärmen, i det här fallet skriver programmet ut texten "Hello World!".

#include <iostream> int main() { int x; std::cout << "Enter a number: "; std::cin >> x; std::cout << "You entered: " << x; return 0; }

För att låta användaren mata in information använder man cin.

Output:

Enter a number: 34 You entered: 34

stdio

Det finns många sätt att skriva ut och mata in data med stdio, här är ett par exempel:

#include <stdio.h> #include <string> int main() { puts("Hello World!"); printf("%s", "Hello!\n"); std::string str; printf("Enter a string: "); scanf("%s", str.c_str()); puts(str.c_str()); return 0; }

Output:

Hello World! Hello! Enter a string: Test! Test!

Mer information om input och output.

[U]1.6 - Operatörer[/U]

Operatörer används för att på något sätt modifiera variabler. En vanlig operatör är likamedtecknet, =, som används för att initialisera variabler.

int x; x = 5;

Vi kan också använda oss av matematiska operatörer; division, subtraktion, addition, multiplikation och modulo.

int x,y; x = 5; y = 3; std::cout << x+y << std::endl; std::cout << x*y << std::endl; std::cout << x/y << std::endl; std::cout << x-y << std::endl; std::cout << x%y << std::endl;

Det finns också en del genvägar man kan ta för att slippa skriva så mycket.

int x; x = 5; x = x + 2; x += 2; x = x * 2; x *= 2;

a += b är samma sak som a = a +b.

int x = 1; x++;

x++ är samma sak som x = x+1. x-- är samma sak som x = x-1.

== - likamed-operatör > - mer än-operatör < - mindre än-operatör <= - mindre än eller likamed-operatör >= - mer än eller likamed-operatör != - inte likamed-operatör ! - INTE (NOT) eller falskt (false) && - och || - eller

Exempel:

int a, b; a = 13; b = 23; a == a; (sant) a == b; (falskt) a < b; (sant) b >= a; (sant) a <= b; (sant) a != b; (sant) a != a; (falskt)

if(a == 5 && b == 10) Om a är 5 OCH b är 10. if(a == 5 || b == 10) Om a är 5 ELLER om b är 10.

Mer information om operatörer.

2.0 - Funktioner och flödeskontrollering

Det här kapitlet är väldigt viktigt då både funktioner och flödeskontrollering spelar en väldigt stor roll i programmering, speciellt i ett objektorienterat språk som C++ (klasser brukar innebära många funktioner).

2.1 - Flödeskontrollering

Om det här påståendet är sant, så gör jag så här. Annars så går jag här ifrån!

En småkomisk förklaring till flödeskontrollering; med hjälp av flödeskontroll kan man kontrollera flödet av ett program genom att införa ett eller flera logiska kontroller.

#include <iostream> int main() { bool x = true; if(x == true) { std::cout << "It's true!"; } else { std::cout << "It's not true"; } return 0; }

Det här programmet skapar först en variabel av datatypen bool, som används för att antingen lagra true eller false. Programmet sätter sedan igång en kontroll som kan resultera i två händelser; antingen så är påståendet sant och programmet skriver ut "It's true!", eller så är påståendet falskt och programmet skriver ut "It's not true". I det här exemplet så är ju påståendet sant, och programmet skulle således skriva ut "It's true!".

#include <iostream> int main() { for(int i = 0; i < 5; i++) { std::cout << i << std::endl; } }

Det här är en annan typ av flödeskontroll, en s.k. loop. Formatet för en for-loop är följande:

for (initilisation; villkor; ökning eller minskning) uttryck;

Enligt vårt exempel alltså:

for (int i = 0; medan i är mindre än 5; öka i med ett)

Eftersom att i börjar på 0, skulle programmet skriva ut:

0 1 2 3 4

Programmet stannade på fyra för att vi sade till den att hålla på så länge i var mindre än fem (och fyra är ju mindre än fem).

#include <iostream> int main() { for(int i = 5; i >= 0; i--) { std::cout << i << std::endl; } }

for(int i = 5; medan i är större eller lika med 0; ta bort 1 från i)

Det här programmet skulle alltså skriva ut:

5 4 3 2 1 0

#include <iostream> int main() { int x = 0; while( x < 5) { x++; std::cout << x; } return 0; }

Det här är ännu en typ av loop, en s.k. while-loop. Formatet är följande:

while(villkor) uttryck;

Som i vårt exempel:
int x = 0;
sålänge x är mindre än 5, öka x med ett och skriv ut resultatet på skärmen.

Programmet skulle alltså skriva ut:

12345

Mer information om flödeskontrollering.

2.2 - Funktioner

Funktioner låter programmeraren skriva kod som sedan kan användas om och om igen utan att behöva skriva ut hela koden flera gånger.

#include <iostream> int function() { std::cout << "Hello!"; return 0; } int main() { function(); return 0; }

Precis som vår main-funktion är vår nya funktion, function, av datatypen int. Den returnerar således också en int, som i det här fallet är 0. Genom att kalla på funktionen inifrån main-funktionen, får man programmet att köra koden som function innehåller. Den skriver alltså ut "Hello!".

#include <iostream> int add(int x, int y) { return x+y; } int main() { std::cout << add(5,2); return 0; }

I det här programmet använder vår funktion funktionsparametrar (x och y), detta låter oss förändra resultatet av funktionen varje gång vi kallar på den. Vi kan också använda return i olika sammanhang, t.ex. skriva ut (x+y) genom att ange funktionen i cout.

Programmet skriver alltså ut siffran sju på skärmen.

Mer information om funktioner.

3.0 - Datatyper

Variabler kan ha olika datatyper, så som int, char, string, o.s.v. Datatypen bestämmer vilken typ av värde som kan lagras i variabeln.

3.1 - Arrays

En array är en serie värden som lagras i en variabel, fast med olika minnesplatser.

int array[4] = {1, 2, 3, 4}; std::cout << array[0] << std::endl; std::cout << array[3] << std::endl;

Här har vi en array med fyra värden; 1, 2, 3, 4, 5. Dessa initialiseras genom att först deklarera en array med fyra minnesplatser, och sedan specificera ett värde för varje minnesplats. Koden ovan kommer att skriva ut värdet 1 och 4.

int array[4]; for(int i = 0; i < 4; i++) { array[i] = i; } for(int i = 0; i < 4; i++) { std::cout << array[i]; }

Här är ett exempel där en array initialiseras med hjälp av en for-loop, arrayen kommer att innehålla värdena 0,1,2,3.

Mer information om arrays.

[U]3.2 - Vektorer[/U]

Vektorer är snarlika arrayer, men är lättare att kontrollera.

#include <iostream> #include <vector> //Krävs för att använda vektorer! int main() { std::vector<std::string> myvector; //Deklaration för en vector av datatypen string. myvector.push_back("Test!"); //En initialisering för en vector. std::cout << myvector[0]; //Skriver ut "Test!". return 0; }

Mer information om vektorer.

[U]3.3 - Pekare[/U]

Alla värden som lagras i variabler har en egen adress i minnet; C++ tillåter oss att hantera dessa adresser.

#include <iostream> int main() { int x = 5; //En vanlig variabel med ett värde, std::cout << "x is at memory: " << &x << std::endl; //Skriver ut minnesadressen. return 0; }

x is at memory: 0x28ff1c

Och-tecknet (&) kallas för en referens-operatör, den översätter i princip en variabel till adressen i minnet den existerar på.

En asterisk (*) är motsatsen till referens-operatören, den översätter en adress till värdet som finns på adressen. Asterisk-operatören kallas på engelska för dereference operator.

#include <iostream> int main() { int x = 5; //En vanlig variabel med ett värde, std::cout << "x is at memory: " << &x << std::endl; //Skriver ut minnesadressen. int * y; y = &x; //y pekar på värdet som finns på adressen 0x28ff1c! std::cout << "value: " << *y; return 0; }

x is at memory: 0x28ff1c value: 5

Mer information om pekare.

[U]3.4 - Datastrukturer[/U]

Liksom arrayer och vektorer kan en datastruktur ha olika element; men inte bara värden, utan också olika datatyper. En datastruktur (structure eller struct på engelska) består av olika medlemmar (members) som sedan deklareras som ett objekt (object); datastrukturer används väldigt ofta i C++, speciellt i form av klasser.

Det här är syntaxen för en datastruktur:

struct namn { datatyp variabel; datatyp variabel; } objekt;

#include <iostream> int main() { struct mystruct //En ny datastruktur { int x; int y; } myobject; //Ett objekt. myobject.x = 5; myobject.y = 3; std::cout << myobject.x << std::endl; std::cout << myobject.y << std::endl; return 0; }

Som du kan se så initialiseras x och y utanför strukturen med hjälp av namnet på objektet, detta är användbart därför att man kan initialisera fler objekt och få tillgång till samma lista av variabler.

#include <iostream> int main() { struct mystruct { int x; int y; } myobject, another_object; myobject.x = 5; myobject.y = 3; another_object.x = 13; another_object.y = 24; std::cout << myobject.x << std::endl; std::cout << myobject.y << std::endl; std::cout << another_object.x << std::endl; std::cout << another_object.y << std::endl; return 0; }

Output:

5 3 13 24

Och här är ett exempel på en datastruktur med olika av datatyper.

#include <iostream> int main() { struct mystruct { int x; std::string str; bool z; } myobject; myobject.x = 19; myobject.str = "Hello!"; myobject.z = false; std::cout << "x: " << myobject.x << std::endl; std::cout << "str: " << myobject.str << std::endl; std::cout << "z: " << myobject.z << std::endl; //False är 0, true är 1. return 0; }

Output:

x: 19 str: Hello! z: 0

Mer information om datastrukturer.

4.0 - Objektorientering

Nu kommer vi till det sista kapitlet som går igenom det som gör C++ så speciellt jämfört med C, nämligen objektorientering. Med hjälp av objektorientering så kan man, likt datastrukturer, deklarera funktioner och värden i klasser och komma åt dessa genom objekt. Programmet får bl.a. mer struktur och det blir oerhört mycket lättare för funktioner att dela variabler och värden med varandra.

4.1 - Klasser

Här är den grundläggande syntaxen för en klass:

class namn { åtkomstspecificering: datatyp variabel; datatyp funktion; } objekt;

Som du ser så är syntaxen för klasser nästan identisk med syntaxen för datastrukturer, men med en del skillnader. Åtkomstspecificeringen gör det möjligt att specificera vad som får komma åt vad inom klassen, om funktioner utanför klassen får komma åt värden eller om bara funktioner innanför klassen kan göra det. En tumregel är att ha innehållet så privat som möjligt.

Olika åtkomstspecificeringar:
public - låter vad som helst komma åt innehållet
private - låter bara medlemmar inom klassen komma åt innehållet. Medlemmarnas vänner kan också komma åt innehållet, men jag kommer inte att gå igenom vänskap inom objektorientering. Jag kommer dock att länka till mer information i slutet av kapitlet.
protected - låter medlemmar och dess vänner och vänners vänner, o.s.v., komma åt innehållet.

#include <iostream> class myclass { private: int x; public: void set_value(int); void print(); } myobject; void myclass::set_value(int a) { x = a; } void myclass::print() { std::cout << x; } int main() { myobject.set_value(5); myobject.print(); return 0; }

I exemplet ovan är variabeln x privat, och kan därför bara kommas åt av medlemmar i klassen.

myobject.set_value(5); myobject.print(); myobject.x = 5;

Skulle man försöka ändra variabeln, eller försöka skriva ut, x som i exemplet ovan så får man ett felmeddelande:

main.cpp|6|error: 'int myclass::x' is private|

Man kan också göra flera olika objekt, även kallat instanser, för att kunna använda samma variabler och funktioner flera gånger.

#include <iostream> class myclass { int x; //Om ingen åtkomstspecifiering finns så är alla medlemmar privata. public: void set_value(int); void print() {std::cout << x << std::endl;} }; void myclass::set_value(int a) { x = a; } int main() { myclass x,y; //Två olika objekt eller instanser! x.set_value(5); //x är 5 y.set_value(12); //x är 12 x.print(); y.print(); return 0; }

Output:

5 12

Som du ser så används x två gånger, men värdet är fortfarande detsamma i respektive objekt. Man kan alltså använda variabler och funktioner flera gånger utan att skriva över någon information.

Mer information om klasser.

Av Debug

[C++] Varför får jag segfault? (löst)

#include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { if(argc < 1) return 1; if(!atoi(argv[1])) printf("Error."); else printf("Success."); return 0; }

(gdb) backtrace #0 0x00000034cd239f54 in ____strtoll_l_internal () from /lib64/libc.so.6 #1 0x00000034cd236fa0 in atoi () from /lib64/libc.so.6 #2 0x000000000040061b in main ()

Jag får segfault när jag inte lägger till några argument, men jag kollar ju så att argc är större än noll innan jag gör atoi(). Någon som vet vad som händer här?

Edit:

Kom på det; jag tänkte fel ang. argc. Det ska vara mindre än två, inte ett.

Av Debug

Varför har så många människor problem med att använda code-taggar?

std::cout << "Såhär skriver man kod på ett forum" << std::endl;

Har du verkligen skrivit all kod själv?

Av Debug

AMD Grafikkort - Linux

Hej!

Jag har hållit mig till Windows sedan jag köpte mig ett AMD-kort, dels för att jag ville spela och dels för att AMD generellt funkade dåligt på Linux. Men detta var ett tag sedan och jag har ingen koll på hur det ser ut i dagsläget, funkar AMD bra i Linux nu för tiden? Vilka drivers är det som gäller?
Jag sitter på ett AMD 4650.

Av Debug

http://i.imgur.com/8VY9M.jpg

Kanske inte så mycket att skryta om; lekte runt lite med Shadowed Unit Frames, men tyckte inte riktigt om det. Tycker att det här räcker.

Det som syns på bilden är;

  • Dominos

  • Recount

  • Healbot

  • Prat

  • Sexymap