C++ :: Operator Overloading For Derived Classes

Jul 29, 2014

Code:

class Var {
public:
Var();
~Var();
private:
QMap<QString, QSharedPointer<Data>> _mapVars;
};
QDataStream &operator<<(QDataStream &stream, const QSharedPointer<Data> p_data);
QDataStream &operator>>(QDataStream &stream, Data &p_data)

I want to serialize _mapVars into a file. However, I have many other classes that are derived from Data, do i need to check for Data type inside the overloaded << functions like below in order to serialize ??? This doesn';t seem to be very correct ...

Code:
QDataStream &operator<<(QDataStream &stream, const QSharedPointer<Data> p_data) {
if(p_data->GetType == .....) {
}
}

View 7 Replies


ADVERTISEMENT

C++ :: Overloading Stream Operators On Derived Classes

Apr 16, 2014

S I want to have different >> operators for several derived classes. Has I tested...

Code: class base{
friend std::istream & operator>>(std::istream & in, base & v);
public:
base();

[Code]......

I noticed that the base operator is the only one being called for all 3 objects. which makes sense and now that I think about it I am more surprised that the "derived operators" compiled at all.

Still, how would I go about declaring different overloaded operators for the different classes?

View 4 Replies View Related

C++ :: Two Classes Derived From Same Template Class And Operator

Mar 11, 2013

class A {
// is abstract
};

class B : public A {
// ...
};

[Code] ....
[Code] ....

main3.cpp: In member function ‘FooB& FooB::operator=(const FooC&)’:
main3.cpp:46:44: error: expected ‘(’ before ‘other’
main3.cpp:46:49: error: no matching function for call to ‘Foo<C>::Foo(const FooC&)’
main3.cpp:46:49: note: candidates are:
main3.cpp:19:2: note: Foo<T>::Foo() [with T = C]
main3.cpp:19:2: note: candidate expects 0 arguments, 1 provided
main3.cpp:16:25: note: Foo<C>::Foo(const Foo<C>&)
main3.cpp:16:25: note: no known conversion for argument 1 from ‘const FooC’ to ‘const Foo<C>&’

Is there any way to make it work?

View 1 Replies View Related

C++ :: Overloading Operator Of Inherited Classes

Apr 19, 2013

I have a class A, from which three classes Aa Ab and Ac are inherited. In class A I have defined some functions by virtual foo()=0, which I implemented in each subclass. Each class is written in a separated .h and .cpp file.

However, now I think it is possible to overload the operator+ INSIDE each class (including pure virtual in class A), such that something like

int main() {
A *value = new Aa();
A value2 = *value + 1.0f;
}

This should be realizable, because the operator+ is part of the Aa class. Now, I would like to do something like

int main() {
A *value = new Aa();
A value2 = 1.0f + *value;
}

This time, I expect I cannot overwrite the operator+, because it is not part of either class A or class Aa.

View 7 Replies View Related

C++ :: Namespaces / Classes - Perform Operator Overload With Insertion Operator

Mar 22, 2013

I'm doing a refresher for C++ and have gotten to operator overloading. I'm trying to perform an operator overload with the insertion (<<) operator, but I have encountered a problem.

Here's my class [In a header file "Shinigami.h"]

#include<string>
namespace K{
class Quincy;
class Shinigami{
friend std::ostream& operator<<(std::ostream&, const Shinigami&);

[Code] .....

If the operator function is a friend of the 'Shinigami' class, why doesn't it recognize any of it's private members? I need it to be in this file because I'm doing a bit of association with the 'Quincy' class.

I thought it was the namespace, but I included that.

View 9 Replies View Related

C++ :: Derived Classes From DLL

May 5, 2013

I've created a base DLL for all my future DLL's, a way of getting version numbers and such and that compiles fine, but I can't add it into a class for a new DLL. All the headers do have an appropriate cpp to define the function declarations (and they compile fine).

All for the base DLL I have:

LibVer.h
Version.cpp
Function.cpp

LibVer.h

#pragma once
#include <vector>
#define DLLEXPORT 1
#define DLLIMPORT 2
#define DLL DLLIMPORT

[Code] .....

View 6 Replies View Related

C++ :: Constructors In Derived Classes

Apr 7, 2014

As long as no base class constructor takes any arguments, the derived class need not have any constructor, if one or more arguments are used then it is mandatory for the derived class to have a constructor and pass the arguments to base class constructors. While applying inheritance, we usually create objects using derived class. Then it makes sense for the derived class to pass arguments to the base class constructor. When both the base and derived class contain constructors ,the base class constructor is execute first.

In case of multiple inheritance, the base classes are constructed ,in the order in which they appear in the declaration of the derived class. Similarly in a multiple inheritance the constructors will be executed in order of inheritance. Since the derived class takes the responsibility to supply initial values to the base class,we supply the initial values that are required by all the classes together where the derived class object is declared.

The constructor of the derived class receives the entire list of values of arguments and pass them on to the base constructors int the order in which they are declared in the derived class

View 1 Replies View Related

C++ ::  How To Overload Variables In Derived Classes

Apr 6, 2013

Is it possible to overload a variable in a derived class? Example:

struct Circle
{
int radius() const { return r; }
private:
int r;
}
struct Smiley : Circle
{
// inherits the function int radius() const, but doesn't return Smiley::r
private:
int r;
}

View 7 Replies View Related

C/C++ :: Access Derived Classes Functions On A Vector

Jan 19, 2014

I need to access the functions of the derived classes from a vector of objects of base classes (can't believe I wrote it). Here a Diagram for you to understand:

So as you see, I need the function Use() from the Usable class, to be able to be called from the vector like:

inventory.at(x)->Use()

View 14 Replies View Related

C++ :: Create Base Class That Is Derived (inherited) By Three Other Classes?

Apr 30, 2013

how to create a base class that is derived (inherited) by three other classes?

View 12 Replies View Related

Visual C++ :: Destroying CArray Of Cobject Derived Classes

Nov 21, 2013

I use a CArray<CClase1,CClase1> m_Clases1.

CClase1 is derived of CObject. " class CClase1 : public CObject"

When, at last I do : "m_Clases1.RemoveAll()" , I suppose that the CClase1 destructor is called. But when i do this the program fails.

View 6 Replies View Related

C++ :: Overloading I/O Operator

Oct 26, 2013

In this below example:

class Point {
private:
double m_dX, m_dY, m_dZ;

[code].....

In that situation, << does not call the overloaded function, but rather calls the << method defined in the i/o library, which prints a message to the controlling terminal. So once it prints the message to the terminal, it then returns the out instance. Why return the out instance rather than a boolean like true? As you can see from the example, once the message is printed to terminal, out is not used anymore.

View 2 Replies View Related

C++ :: Overriding / Overloading New And Delete For Plugin Classes

Dec 27, 2012

I'm looking at writing my own plug-in app, but I know that deleting class instances that were created in a plug-in module can result in the dreaded "undefined behaviour" because of the different memory spaces. Many examples of plug-ins use create_class and destroy_class functions to resolve this problem, but I wondered about overriding / overloading the class's new and delete operators. This would be used for all third-party library class derivations (e.g. derived GUI classes) and all home-grown classes.

The operators would only be declared in the class declaration:

class PluginBase {
public:
void *operator new(std::size_t n);
void operator delete(void *p);
// Other plugin bits

While the actual implementation would be defined in the plug-in's implementation file:

#include "PluginBase.h"
void *PluginBase::operator new(std::size_t n) {
return ::operator new(n);
[Cvoid PluginBase::operator delete(void *p) {
return ::operator delete(p);
}

This would need to be implemented in every transferable plug-in class (possibly by a crafty IMPLEMENT_PLUGIN(classname) macro or some other mechanism), but before I commit this to my code I was hoping for feedback. Does this sound like a good idea? The GUI classes in particular are handled by a third-party library, so it's some memory-space safe way of deleting them by the GUI library (in the app) that I'm looking for.

View 11 Replies View Related

C++ :: Operator Overloading IStream

Jan 26, 2015

I am working on this assignment...

Code:
#include <iostream>#include <iomanip>
using namespace std;
class Score
{
private:
// Value at which we'll shift digits from million_counter to billion_counter
static const int THRESHOLD = 1000000000;

[Code] ....

It gives the errors:
line 105 error: million_counter was not declared in this scope
line 106 error: normalizeScore was not declared in this scope
line 110 error: million_counter was not declared in this scope
and more of that until
line 170 error: no match for 'operator<<' in 'std:perator<< <std::char_traits<char> >((* & std::cout), ((const char*)"a+b is ")) <<operator+((*c(const Score*) (& a)), (*(const Score*)(& b)))'

I thought that because i declared friend functions, they would be able to access the private variables of the class.

View 2 Replies View Related

C++ :: Operator Overloading In A Correct Way?

Apr 1, 2013

Well... I observed, as a non-professional programmer that "overloading operators" has some strict rules and some conventions... so any operator can differ from another. In order to have a clearest idea, I'd like to ask you to specify, for every operator, the correct (or best) way to overload it.

There are cases where you define &operator and cases where you define operator (without "&"). There are cases where operator are defined as "friend" inside class, and other cases where operator is declared externally.

example: ostream &operator<<
(why it uses & ??)

So can we have a summary for all kind of operators?

View 19 Replies View Related

C++ :: Overloading Output Operator

Mar 31, 2013

I'm trying to overload operator<<, but I get an error saying 'ostream' does not name a type. Am I forgetting to declare something else? ostream& operator<< (ostream& out, Struct &b);I made sure to #include <iostream> too.

View 1 Replies View Related

C++ :: Operator Overloading WITH Chaining

Jun 14, 2014

I am having a bit of an issue figuring out how to operator overload with chaining. I have this as my operator= function (Its for linked lists)

WORD & WORD::operator=(const WORD & Org){
cout << "
operator= has been called WITH CHAINING
";
character *p = front;

[Code] ....

I want to be able to do X = X = X where X is of class WORD, but it errors when that line is called. And by error, I dont mean a written error, it just compiles, then says 'MSVC has stopped working' on a new pop up.

View 4 Replies View Related

C++ :: Operator Overloading For Matrices?

Sep 16, 2014

I want to implement operator overloading for +=, so that the following arethmetic is possible for matrices: matrix += matrix

Here is how I have defined it in matrix.h

#ifndef MATRIX_H
#define MATRIX_H
#include <cassert>
#include <iostream>
#include <iomanip>
using namespace std;
template <class T> class Matrix;
template <class T> Matrix<T> operator+= (const Matrix<T>& m1, const Matrix<T>& m2);

[code].....

How do I implement this correctly?

View 7 Replies View Related

C++ :: Finishing Two Operator Overloading Functions

Apr 27, 2013

How to finish these two remaining operator overloading functions

Also, "contents and NumItems are private"

Code:
Bag operator+ (const Bag& b1, const Bag& b2);
//Postcondition: the bag returned is the union of b1 and b2.
ostream& operator<<(ostream&, const Bag&);
//Overloading operator <<

[Code] .....

View 9 Replies View Related

C++ :: Operator Overloading And Exception Handling

Nov 15, 2013

I have a date class and i overloaded operator >> to accept input in dd/mm/yyyy format. if i enter the wrong date format my program will crash. How do i do exception handling for this? How should i do the try part? and for catch, I'll just catch a date class variable?

Code:
void operator >> (istream &is, clsDate &date) {
string inputDate;
is >> inputDate;
int mm = stringToNumber(inputDate.substr(3,2)); // read 2 characters from character number 3 start
int dd = stringToNumber(inputDate.substr(0,2)); // read 2 characters from character number 0 start
int yy = stringToNumber(inputDate.substr(6,4)); // read 4 characters from character number 6 start

[Code] .....

View 2 Replies View Related

C++ :: Overloading Operator + For Literal Strings?

Sep 8, 2013

i have 1 nice write() function:

void write() {
cout <<"";
}
template <typename A, typename ...B>
void write(A argHead, B... argTail) {
cout << argHead;
write(argTail...);
}

these function works. but if i concat literal strings with '+', i must use '(string)'. so i'm trying overload the operator + for concat literal strings, but without sucess:(

string operator + ( char *value1) {
string value2;
value2=(string) value2+value1;
return value2;
}

(these functions are inside of my Console class)

View 2 Replies View Related

C++ ::  Operator Overloading Using A Friend Function

Jul 24, 2013

What is the role of friend function in this program? Is it even executed here?

#include <iostream>
using namespace std;
class loc {
int longitude, latitude;
public:
loc() {} // needed to construct temporaries

[Code] ....

View 2 Replies View Related

C++ :: Operator Overloading And Output Suppression

Dec 30, 2013

1st Question: I have three different classes A, B, and C; and correspondingly overloaded the insertion stream operator(<<) for all three classes. Classes A and B each have objects of class C as private data members. I am seeking a scheme whereby the << operator behaves differently for class C objects when an object of class A is to be printed from when an object of class B is to be printed. In other words, I want to have one << operator function invoked for class C when the object in question is of class A and another << operator function called for class C when the object in question is of class B. Is this realizable?

2nd Question: I have a derived class that uses a search function defined in an 'inaccessible' linked-list base class. By inaccessible, I mean I cannot change the contents of any of the member functions of this base class. The search function has three cout statements that print string literals showing results of the search operation if:

a. list is empty
b. search item is found in the list
c. search item is not found in the list upon searching

I am seeking a scheme whereby, instead of displaying the results of the search operation on the standard output (i.e. screen), a function I write can capture these string literals as input parameters, and process them for a Boolean value return. Is it possible to preclude the printing of the literals on the screen in this manner?

View 5 Replies View Related

C++ :: Overloading Operator With Container Or Pointers

Mar 2, 2013

I have a class:

class Foo {
private:
MyType* things[10];
};

While I would like to overload the [] operator for the use as this:

Foo myFoo;
myFoo[0] = myFoo[1];

Right now I am getting ugly:

MyType** operator[](size_t idx) { return &(things[idx]);
//...
*(myFoo[0]) = *(myFoo[1]);

Anything to fix that up a little?

View 1 Replies View Related

C++ :: Overloading Stream Extraction Operator?

Oct 1, 2013

I wrote a class that can display fractions ex. 1/4 and I cannot figure out how to get >> to process 1/4 and separate them into variables numerator and denominator.

my program just constantly creates RationalNumber Objects when it reaches cin >> A .

my overloaded stream extraction function:

istream& operator >> (istream& in, const RationalNumber& rn)
{
char L;

[Code].....

View 1 Replies View Related

C++ :: Overloading Operator For Complex Numbers

Jul 14, 2013

I have a program written to add 2 complex numbers. Everything is working, except when the sum gets written, it gives me a number that is way off.

#include <iostream>
#include <complex>
#include <fstream>
#include <cstdlib>
#include <math.h>
class complex {
public:
complex();
complex(double r, double i){

[Code] .....

And my output ends up being Enter a complex number (a+bi) :

1+2i
Enter a complex number (a+bi) :
2+3i
x 1+2i
y 2+3i
4.8784e-270+4.85593e-270i

View 12 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved