work with satic private variable

M

MN

Hi,
I'm new to c++ and I can't figure out these errors:

error: expected unqualified-id before ‘,’ token
error: expected ‘,’ or ‘...’ before ‘::’ token
error: expected unqualified-id before ‘,’ token
‘error: s1’ is not a class or namespace

My code is:

#include <iostream>
using namespace std;



class classA
{
private:
static int a;
public:
classA();
~classA ();
classA (const classA &old_classA);
int count_classA (int new_item); // Count number of items
friend int total_count (int classA::a, int classB::b);
};

classA::classA()
{
a = 0;
}

classA::~classA(){};

int classA::count_classA(int new_item)
{
a += new_item;
return (a);
}


class classB
{
private:
static int b;
public:
classB();
~classB ();
classB (const classB &old_classB);
int count_classB (int new_item); // Count number of items
friend int total_count (int classA::a, int classB::b);
};

classB::classB()
{
b = 0;
}

classB::~classB(){};

int classB::count_classB(int new_item)
{
b += new_item;
return (b);
}

int total_count (int classA::a, int classB::b)
{
int total = 0;
total = classA::a + classB::b;
return (total);
};

int main ()
{
classA s1;
classB s2;

for (int i= 0;i < 5; ++i)
s1.count_classA(i);

for (int j= 0; j < 4; ++j)
s2.count_classB(j);

cout << "Total of items is " << total_count (s1::a, s2::b) << endl;
return 0;
}
thanks for your help
 
R

Ramaswamy

Hi,
I'm new to c++ and I can't figure out these errors:

error: expected unqualified-id before ‘,’ token
error: expected ‘,’ or ‘...’ before ‘::’ token
error: expected unqualified-id before ‘,’ token
‘error: s1’ is not a class or namespace

My code is:

#include <iostream>
using namespace std;

class classA
{
private:
        static int a;
public:
        classA();
        ~classA ();
        classA (const classA &old_classA);
        int count_classA (int new_item);                                                        // Count number of items
        friend int total_count (int classA::a,  int classB::b);

};

classA::classA()
{
        a = 0;

}

classA::~classA(){};

int classA::count_classA(int new_item)
{
        a += new_item;
        return (a);

}

class classB
{
private:
        static int b;
public:
        classB();
        ~classB ();
        classB (const classB &old_classB);
        int count_classB (int new_item);                                                        // Count number of items
        friend int total_count (int classA::a,  int classB::b);

};

classB::classB()
{
        b = 0;

}

classB::~classB(){};

int classB::count_classB(int new_item)
{
        b += new_item;
        return (b);

}

int total_count (int classA::a,  int classB::b)
{
        int total = 0;
        total =  classA::a +  classB::b;
        return (total);

};

int main ()
{
        classA s1;
        classB s2;

        for (int i= 0;i < 5; ++i)
                s1.count_classA(i);

        for (int j= 0; j < 4; ++j)
                s2.count_classB(j);

        cout << "Total of items is " << total_count (s1::a, s2::b) << endl;
        return 0;}

thanks for your help


I have altered ur code with necessary modification.
For making exact simulation of friend function, no need to make a and
b variables as static
#include <iostream>
using namespace std;

class classB;
class classA
{
private:
static int a;
public:
classA();
~classA ();
classA (const classA &old_classA);
int count_classA (int
new_item); //
Count number of items
friend int total_count (classA&, classB&);

};

int classA::a=0;

classA::classA()
{
a = 0;

}

classA::~classA(){};

int classA::count_classA(int new_item)
{
a += new_item;
return (a);

}

class classB
{
private:
static int b;
public:
classB();
~classB ();
classB (const classB &old_classB);
int count_classB (int
new_item); //
Count number of items
//friend int total_count (int classA::a, int classB::b);
friend int total_count (classA&, classB&);

};
int classB::b=0;

classB::classB()
{
b = 0;

}

classB::~classB(){};

int classB::count_classB(int new_item)
{
b += new_item;
return (b);

}

int total_count (classA &A, classB &B)
{
int total = 0;
//total = classA::a + classB::b; //Then no use of taking
arguments
total = A.a + B.b;
return (total);

};

int main ()
{
classA s1;
classB s2;

for (int i= 0;i < 5; ++i)
s1.count_classA(i);

for (int j= 0; j < 4; ++j)
s2.count_classB(j);

cout << "Total of items is " << total_count (s1, s2) << endl;
return 0;
}


Regards
Ramaswamy B.A
 
M

MN

Thank you Ramaswamy B.A!
I've done small modifications with comments in code that you've
posted, in order to guide those who have difficulties with syntax.



#include <iostream>
using namespace std;

class classB; // define classB in order to use it in friend
function, which is declared in classA
class classA
{
private:
static int a;
public:
classA();
~classA ();
classA (const classA &old_classA);
int count_classA (int new_item); //Count number of
items
friend int total_count (classA&, classB&);

};

int classA::a=0; // define the static private variable like
this

classA::classA()
{
a = 0; // Initialize static private variable
}

classA::~classA(){};

int classA::count_classA(int new_item)
{
a += new_item; // increment static private variable
cout << "count in classA is " << a << "\n\n";
return (a);
}


class classB
{
private:
static int b;
public:
classB();
~classB ();
classB (const classB &old_classB);
int count_classB (int new_item); // Count
number of items
friend int total_count (classA&, classB&); // function that
calls classes with reference
};

int classB::b=0;

classB::classB()
{
b = 0;
}

classB::~classB(){};

int classB::count_classB(int new_item)
{
b += new_item;
cout << "count in classB is " << b << "\n\n";
return (b);
}

int total_count (classA &A, classB &B)
{
int total = 0;
total = A.a + B.b; // use static private variables in friend
function
cout << "Total of items is " << total;
return (total);

};

int main ()
{
classA s1;
classB s2;

for (int i= 0;i < 5; ++i)
{
cout << "Added item number " << i << "\n";
s1.count_classA(i);
}
cout << "\n";
for (int j= 0; j < 4; ++j)
{
cout << "Added item number " << j << "\n";
s2.count_classB(j);
}
cout << "\n";
total_count (s1, s2);
return 0;

}
 
B

Bart van Ingen Schenau

Hi,
I'm new to c++ and I can't figure out these errors:

error: expected unqualified-id before ‘,’ token
error: expected ‘,’ or ‘...’ before ‘::’ token
error: expected unqualified-id before ‘,’ token
‘error: s1’ is not a class or namespace

My code is:
thanks for your help

There is so much wrong with the code, that I don't know where to
start.
Can you explain what the code is supposed to demonstrate and why you
think it should be written as it is?

Bart v Ingen Schenau
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,071
Latest member
MetabolicSolutionsKeto

Latest Threads

Top