Avatar billede krukken Juniormester
03. august 2006 - 17:15 Der er 11 kommentarer og
1 løsning

Ofte array med strings

Jeg har følgende variable under mine medlemsvariabler i en klasse:
char Strings;

Hvordan får jeg String initieret til "String1","String2" - kan dette gøres i konstruktoren eller headerfilen?
Avatar billede arne_v Ekspert
03. august 2006 - 17:58 #1
lad det vaere:

char **Strings;

og lav det i constructor
Avatar billede krukken Juniormester
03. august 2006 - 18:34 #2
Hvordan skal jeg så skrive i konstruktoren - følgende virker ikke?

headerfil:
char **Strings;

konstruktor:
Strings= {"String1",
        "String2"};
Avatar billede krukken Juniormester
03. august 2006 - 19:31 #3
Er der nogle der har en løsning på problemet?
Avatar billede bertelbrander Novice
03. august 2006 - 20:01 #4
Man kan ikke lige løse det med char ** uden at have en mellem variabel (afaict)

Hvis alle instancer skal deles om den samme mængde strenge kan man:
#include <iostream>

class X
{
public:
  static char *String[];
};

char *X::String[] = {"Ole", "Peter"};

int main()
{
  X x;
  std::cout << x.String[1] << std::endl;
}
Avatar billede bertelbrander Novice
03. august 2006 - 20:05 #5
Man kan også:
#include <iostream>

class X
{
public:
  X();
  char **String;
};

char *pop[] = {"Ole", "Hans"};

X::X() : String(pop)
{
}

int main()
{
  X x;
  std::cout << x.String[1] << std::endl;
}
Avatar billede krukken Juniormester
03. august 2006 - 20:08 #6
Det er alle klasseinstancer af en klasse der skal deles om tekststregende. Kan man så ikke ligge den under private data?
Avatar billede krukken Juniormester
03. august 2006 - 20:12 #7
Jeg får en fejl ved linking ved det første eksempel, der siger at den allerede er defineret?
Avatar billede bertelbrander Novice
03. august 2006 - 20:16 #8
Har du static foran String? Static betyder i denne sammenhæng at den deles af alle X'ere og kan tilgåes uden object, så man kan også skrive X::String[1]

Du kan godt lave String som private.
Avatar billede krukken Juniormester
03. august 2006 - 20:30 #9
Jeg ved ikke lige hvad der var galt - men nu fungere det. Ligger du et svar?
Avatar billede arne_v Ekspert
03. august 2006 - 20:34 #10
Min ide var at lade construcutor:

String = new charptr[2];
String[0] = "String1";
String[1] = "String2";
Avatar billede bertelbrander Novice
03. august 2006 - 20:38 #11
Du skal nok overveje at lave din Sting const...

Jeg samler stadig ikke på point.
Avatar billede krukken Juniormester
04. august 2006 - 21:10 #12
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester