[c++] Någon som kan klura ut vars felet ligger (memcpy)

Här diskuteras programmering och utveckling
O_Isoz
Inlägg: 64
Blev medlem: 13 feb 2007, 11:28

[c++] Någon som kan klura ut vars felet ligger (memcpy)

Inlägg av O_Isoz »

Hej
Jag har en class som ser ut så här:

Kod: Markera allt

class Circ_buf{
char b_buf[];
unsigned int b_pos;
unsigned int b_sta; // where is zero?
unsigned int b_size;
public:
    Circ_buf(int llength);
    bool buff_get(char *new_loc); // Memcpy the data to a new location
    bool buff_add(int length,char *new_data); //add data to the buffer
    int buff_size(void);
    };

När jag försöker

Kod: Markera allt

bool buff_get(char *new_loc)  // Memcpy the data to a new location
{
    memcpy(new_loc,Circ_buf::b_buf,(Circ_buf::b_pos-Circ_buf::b_sta));
}
Så klagar g++ på att Circ::buf[0] är "private" varför gör den det?
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

Re: [c++] Någon som kan klura ut vars felet ligger (memcpy)

Inlägg av gasol »

Alla attribut är private som standard i C++

Flytta ner alla publika variabler nedanför public: så löser det sig...


edit: om det är meningen att den ska vara private så måste du säga till att deklarationen av buff_get är en member function av klassen.

Såhär gör det du det:

bool Circ_buf::buff_get(char *new_loc)

Annars så vet inte kompilatorn att funktionen buff_get tillhör klassen Circ_buf


edit2: om buff_get är en member function så vill du inte accessa variablerna på ett statiskt vis, utan instansvariablerna.
Så detta: memcpy(new_loc,Circ_buf::b_buf,(Circ_buf::b_pos-Circ_buf::b_sta));
borde vara: memcpy(new_loc, b_buf, (b_pos - b_sta));
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Skriv svar

Återgå till "Programmering och webbdesign"