C++ :: Templates / Multiple Inheritance And Ambiguous Overloads?

Jan 15, 2014

Let's say I have a templated base class:

Code:
template <typename Input>
class Consumer
{
public:
void consume(Input input)
{
// do something
}
};

Now, I have a class which derives from this twice (A and B are unrelated, but otherwise unimportant classes):

Code:
class A;
class B;
class Derived: public Consumer<A>, public Consumer<B>
{
};

Now, elsewhere in the code I do this:

Code:
{
A myA;
Derived myDerived;
myDerived.consume(myA);
}

This looks like it should be simple enough, but g++ 4.8.1 is giving me a "request for member is ambiguous" error.

View 2 Replies


ADVERTISEMENT

C++ :: Typical Implementation Of Multiple Inheritance

Jun 20, 2013

Here is the code:

class Foo {
public:
Foo(){cout<<"Foo"<<endl;}
};
class Bar : public virtual Foo {

[Code] ....

This is a typical implementation of multiple inheritance. If define class FooTooBar as,

Code:
class FooTooBar : public virtual FooToo, public virtual Bar {
public:
FooTooBar(){cout<<"FooTooBar"<<endl;}
};

I know why we use virtual inheritance in the class Bar and class FooToo. But if we use virtual inheritance in the class FooTooBar, does it make any sense?

View 1 Replies View Related

C++ :: Passing Multiple Array To Function Sum Using Inheritance

Dec 17, 2014

Write a program using inheritance allow user to enter grades of his students 5~8 students as a base class and compute the sums for each students in derived class and compute the average of sums in another derived class. I created 3 classes in 1 header file and 1 cpp file how ever i cant seem to get the sum or the average to show up on execution time

header file
#ifndef GRADES_H_INCLUDED
#define GRADES_H_INCLUDED
class Grades {
public:
Grades()

[Code] .....

View 2 Replies View Related

C++ :: Private Inheritance Multiple Times From Same Class

Sep 19, 2014

I've been working on a program that uses a reference counting class that I've written which works fine for objects that inherit from it however I now need to have the following setup:

class SBComponent : private Refcounted { /*stuff*/}
class ProxiedComponent : public SBComponent, private Refcounted {/*stuff*/}

The compiler gives the following warnings

warning: direct base ‘Refcounted’ inaccessible in ‘ProxiedComponent’ due to ambiguity

And then several repeats of the error:

error: request for member ‘bk’ is ambiguous
Back *b = bk<ProxiedComponent>();

bk is a templated function that's defined in Refcounted and returns a pointer of type <template arg>::Back (ProxiedComponent::Back in this case).

I don't understand why the call to bk is ambiguous as although there's two instances of Refcounted (there needs to be with the way I've designed it so I can't make it virtual) it's inheritance is private in both cases so there should only be one instance of it visible in ProxiedComponent.

View 7 Replies View Related

C++ :: Reference To Column Is Ambiguous

Feb 18, 2014

I'm using GCC 4.8.1 and I want to implement a XML parser using TinyXML and port it to AngelScript

Now, it says: reference to 'Column' is ambiguous

I've declared a class called xml_parser and I've added everything of tinyxml as it's public member when I call Column(), and also Row(), it give's this error. what should I do?

This is it's code:

xml_parser.hpp:
#ifndef AGK_XML_PARSER_H
#define AGK_XML_PARSER_H
#define TIXML_USE_STL
#include <tinyxml.h>

[Code] .....

View 16 Replies View Related

C++ :: Error Initializing Map - Ambiguous Operator

Feb 9, 2014

Okay so inside my ArcherArmor.cpp, I'm trying to figure out why the map initializer list isn't working, but for some reason I keep getting "Error C2593: 'operator =' is ambiguous". Here is my code:

I also have a class which ArcherArmor is derived from, that has a struct called `Armor`, which I left out for simplicity. The main problem is that error! The only thing I can think of is that im initializing the map wrong.

//ArcherArmor.h
#include <string>
#include <map>
class ArcherArmor {
private:
map <int, Armor> soldier_armor;
public:
void ArcherArmor_shop();

[Code] .....

View 7 Replies View Related

C++ :: Errors About Types - Ambiguous Call

Nov 6, 2013

Code:
void write() {
setlocale(LC_ALL, "en_US.UTF-8");
cout <<"";
}
template <typename A, typename ...B>
void write(string argHead, B... argTail) {
setlocale(LC_ALL, "en_US.UTF-8");

[Code] ....

what I'm doing wrong with my write() function? I did like the read() function(for work diferent with another types) but i get these error:

"C:UsersJoaquimDocumentsCodeBlocksMy Classconsole.h|218|error: call of overloaded 'to_string(char*&)' is ambiguous|"

View 14 Replies View Related

Visual C++ :: Ambiguous Symbol Error

May 28, 2013

Here is the error I am getting:

1>d: estprojectgdiplusrenderer.h(61): error C2872: 'Font' : ambiguous symbol
1> could be 'c:program files (x86)microsoft visual studio 10.0vcincludecomdef.h(312) : Font'
1> or 'c:program files (x86)microsoft sdkswindowsv7.0aincludegdiplusheaders.h(244) : Gdiplus::Font'

How can I fix this issue?

View 2 Replies View Related

C++ :: Stubbing Standard Function - Ambiguous Call

Dec 4, 2013

I need to make a stub for some standard library function, but the compiler gets confused about which function I want to call in my code. I thought that putting the stubbed function together with its caller into an anonymous namespace will give higher precedence to the stub, but it didn't.

Here is an example code:

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <signal.h>
namespace{
int sigaction(int signum, const struct sigaction * act, struct sigaction * oldact)

[Code] ....

Result:
main.cpp: In function ‘void {anonymous}::test()’:
main.cpp:23:47: error: call of overloaded ‘sigaction(int, sigaction*, NULL)’ is ambiguous
main.cpp:23:47: note: candidates are:
main.cpp:8:5: note: int {anonymous}::sigaction(int, const sigaction*, sigaction*)
In file included from main.cpp:4:0:
/usr/include/signal.h:266:12: note: int sigaction(int, const sigaction*, sigaction*)

It possible to force the compiler to use my stubbed version of sigaction() and if yes, how to do that? I am not allowed to modify test() function.

View 4 Replies View Related

C++ :: Invalid Conversion Error - Ambiguous Typecast

May 4, 2013

The compiler keeps on telling me that invalid conversion from wxBitmap* to wxString on the line with the AddTool function, whiles I do not even try to do such an ambiguous typecast.

wxWidgets 2.9.4
MinGW
gdb

Code:

#include "mainwnd.h"
//namespaces

//other definitions and declarations
CMAINWND::CMAINWND(const wxString& szTitle):wxFrame(NULL,wxID_ANY,szTitle) {
wxImage::AddHandler(new wxBMPHandler);

[Code] .....

View 8 Replies View Related

Managed C++ And C++/CLI :: Designing GUI - Ambiguous Symbol String Used

Jan 10, 2014

I am working on my project of gesture recognition using c++ and open cv and i am also designing GUI simultaneously. I am using system namespace for GUI part and cv namespace for gestures.

After compiling i am getting error as Ambiguous symbol String is used.

This the link for msdn error support : [URL] .....

View 5 Replies View Related

C++ :: Ambiguous Call On Overloaded Variadic Template Operators

Oct 30, 2013

When compiling the code

#include "tensor.h"
int main() {
Tensor<2,-2> m = {{1,2},{1,3}};
Tensor<2> v = {1,5};
std::cout<<m*v<<"

[Code] ....

Why do I get an ambiguity and why is not the wanted operator*-overload (the last one in the tensor.h file) not even mentioned as one of the candidates? Is it clear what I want to do? And if so, what can I do to make the call unambiguous?

View 3 Replies View Related

C++ :: Inheritance Slows Down Process

Sep 5, 2013

i have read that inheritance slows down the process.because a_class -> b_class -> c_class it goes thorough many classes to find a function or a value. people advices not to do it more than a few times. what if instead of inheritance we are using headers, would it slow down the process also??i mean which one is faster? and arent both the same when we use headers or used inheritance.

View 3 Replies View Related

C++ :: Object Inheritance And Encapsulation

Jan 17, 2014

I want to define a base class A which allows different type of logging (file stream, console, etc). In the meantime, I want a class B to to be able to call A's print function (i.e. derived class C's print function which defines the logging method). However, I don't want to make A's print function to be public because it will only be called by B.

class A {
protected:
virtual void print(void);
};

[Code] .....

View 1 Replies View Related

C++ :: Virtual Keyword In Inheritance?

Feb 19, 2014

How to put virtual keyword in the function of the base class. Will the function still be over-written properly? What will happen if I

(1) call function from base class pointer
(2) call function from derived class pointer
(3) call function from derived class object

If the virtual keyword is present, the over-written version will be called in all cases, am I mistaken?

View 1 Replies View Related

C++ ::  Inheritance Using Base Method With Other Name?

Feb 18, 2015

I have 2 classes with a Function with the same definition (both inherited from the same base class) and in my derived class I derive from both of those 2. Is it possible to use the Methods of both classes? for example with an other name?

class A {
protected:
int print(int a) { std::cout << "int A: " << a << std::endl; }
};
class B : A

[Code] ....

is there something like using C::print as printc;?

The Problem, I have a Sprite class that derives from a Rectangle with properties Position, Size, Origin and Angle and a Text class that derives from Rectangle. Now i have a Button class deriving from both Sprite and Text.

- The Position, when moving the Button i have to change the position of both so i Implemented a new Method which calls SetPosition from the Sprite and the Text.
- The SetSize just affects the Button so i just did using Sprite::SetSize;
- The angle affects both so i just implemented a new Method and hide the other two

The problem is here:
- The Origin: writing button.SetOrigin(-1,0) should set the Origin of the Button and writing button.SetTextOrigin should set the Origin of the text.

Should i just reimplement a Mehtod named SetTextOrigin and call Text::SetOrigin from there and hide the button.Text::SetOrigin or is there something like using Text::SetOrigin as SetTextOrigin?

View 6 Replies View Related

C++ :: Copy Constructors In Inheritance

May 16, 2013

#include <iostream>
using std::cout;
using std::endl;
class CBox // Base class definition
{
public:
// Base class constructor
explicit CBox(double lv = 1.0, double wv = 1.0, double hv = 1.0) : m_Length(lv), m_Width(wv), m_Height(hv)

[Code] .....

This example produces the following output:

// Derived class copy constructor
CCandyBox(const CCandyBox& initCB): CBox(initCB) {
std::cout << std::endl << "CCandyBox copy constructor called";
// Get new memory
m_Contents = new char[ strlen(initCB.m_Contents) + 1 ];
// Copy string
strcpy_s(m_Contents, strlen(initCB.m_Contents) + 1, initCB.m_Contents);
}

It will work right? Cause when I do "CBox(initCB)" it only sends the BASE part of the derived object to the base class copy constructor, is it copy or default?

View 6 Replies View Related

C++ :: Array Of Objects And Inheritance

Dec 20, 2013

I have Class A as a base class , and Class B , C derived classes from A and there's class D who have a data member (pointer to Array) of type A (Composition)

class D{
A **a;
int size;
.......
a = new A*[size];
......
};

And i have Print method , in its body i have to specific element (if it from class B or C ) with a given ID(both B and C have a data member ID ) there should be 2 options in print function .. printing elements for class B , or printing elements for class C ? how can i specific the elements ?

View 5 Replies View Related

C# :: How To Use Encapsulation / Polymorphism And Inheritance In WPF

Oct 20, 2014

I have been reading up about object oriented programming recently and have come across 'Encapsulation, Polymorphism and Inheritance' as i understand it so far all OOP programs should use these three concepts. So i started thinking how do i get these concepts into my program as i am using WPF C# and i could not really find much good info about how these concepts apply to WPF programs.

Or do these concepts just not work with WPF programs?

View 5 Replies View Related

C# :: Inheritance In WinForm Design

Feb 23, 2014

I have two Form Employee and Instructor, here Employee is super class of instructor.

public class Instructor: Employee
{
//Instructor class
}

I am able to access all property of Employee inside instructor class but with these some textbox and button design inside Employee design is also getting inherited inside Instructor design and i don want this and i want to maintain the parent-child relationship between Employee and Instructor.

View 11 Replies View Related

C++ :: Self-Deleting Objects With Inheritance

May 27, 2013

I'm writing a bunch of classes like Form, Button, etc. All these are derived from a base Object class. I want to make these objects auto-delete, so I only have to declare the new keyword, and the program will clean them when necessary. I understand the implications of dereferencing, I just have a couple of questions about my code.

I through this run-down example together:

Code:
#include <Windows.h>
#include <map>
class Object {
public:
Object() {};
~Object() {};
void *operator new(size_t size);
void operator delete(void *ptr);

[Code] .....

I have added a static variable of std::map type called m_Dynamic. I have overloaded the new and delete keywords (within the Object class) to keep the m_Dynamic map up-to-date. This prevents objects created on the stack from being deleted.

The object itself can then be deleted via the base Dispose() method. Or methods such as Destroy() can be added in derived classes and call upon Object::Dispose() themselves. This can be overloaded, etc, but eventually will be removed from the public view. I only have it here for testing.

From what I can tell everything "works", though I'm uncertain that the object is being correctly deleted.

Though, my main concern is that when a derived class such as Circle calls Dispose() which in turns fires delete this. Does it free() the sizeof(Object) or does it correctly free() the sizeof(Circle)?

Are there any other things I should be vary of? I only just started playing with new/delete overloading yesterday.

View 14 Replies View Related

C++ :: Array Of Class With Inheritance?

Jun 6, 2012

Shape base class, line and Point derived classes. What should I declare in .h files and implement in .cpp files that this is array will be work.

My major concern refer to operator [] and assign (=) operator. As far as I understand I should overload ([]) and (=) three times for classes shape , line and point or not... or is it possible made through virtual function? How will be code looks like ?

Code:
// part of main.cpp
Shape* shapes[3]; // Array of pointers to Shape
shapes[0] = new Shape();
shapes[1] = new Line ("line from array ", Point(1,22),Point(33,22));
shapes[2] = new Point(11,44);
cout << "using ToString function" << endl;
for(int i=0; i < 3; i++)
cout << s[i]->ToString();
for(i=0; i < 3; i++)
delete s[i];

View 2 Replies View Related

C++ :: Call To Member Function X Is Ambiguous - Overloaded Member From Header File

Feb 23, 2014

I get the following error in XCode whenever I try to access the member I created 'randomGen' in a separate class in a different header file. I have made sure to include the header file and have tried to access it through an object.

This is the code I enter when trying to access the method from randomiser.h in main.cpp. It is also an overloaded function with doubles and integers:

RandomG randomiser;
randomiser.randomGen(); // 'Call to member function 'randomGen' is ambiguous'

This is the code inside randomiser.h:

#include <string>
#include <iostream>
using std::string;
using std::cout;
using std::endl;
class RandomG {

[Code] ....

This is the error inside xcode: [URL] ....

I have tried seperating the code for the functions in another class (main.cpp) and then running and it seems to works, so I'm not sure why I can't put everything in the .h file and then access it?

I would like it in a seperate file so it doesn't clutter my main. I am writing a game with SDL so that might be confusing and I would like the window to have a random title and other random properties, so it would be easier to use a function.

View 3 Replies View Related

C++ :: No Constructor Could Take Source Type Or Constructor Overload Resolution Was Ambiguous

Mar 1, 2014

i am writing this bank accounts program using structures. i haven't implemented the function before that i want to check if the data is being read and printed. When i build and run the program in visual studio it gives me the following error. "No constructor could take the source type, or constructor overload resolution was ambiguous". Now whats wrong in this program?

/* Bank Accounts Program */
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>//needed to use system() function
using namespace std;
const int MAX_NUM = 50;
struct Name{

[code]....

View 1 Replies View Related

C++ :: Some Error With Inheritance Access Specifiers

Aug 5, 2013

let me show you the (simple) code:

Code:
#ifndef DUCK_H_
#define DUCK_H_
#include<iostream>
using namespace std;
class Duck

[Code].....

When I compile, it says: "error: 'virtual void Duck::display()' is protected" how come I can't gain access to MallardDuck's display(), which is public?

View 3 Replies View Related

C++ :: Trying To Implement Linked List Using Inheritance

Jan 5, 2014

Not inheriting properly and provide the corrected code if possible

Code:
#include <iostream>
using namespace std;
class Node {
protected:
int Data;

[Code] ....

View 4 Replies View Related







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