C++ :: Compiler Will Not Allow To Call A Public Method In Another Class
Feb 23, 2013
I have read the book over and over and I thought I understand "CLASS". But when I applied it and write the code the compiler tells me that there is a compiling error.
1. I have this method addProduct(Product* pProduct) in a Class called ProductRack, the code is in ProductRack.cpp file. The declaration of the Class methods and private variables are in ProductRack.h header file.
2. But when I call a method in the DeliveryCHute Class from the ProductRack Class I get a compiler errors which are these:
A.IntelliSense: a nonstatic member reference must be relative to a specific object
B.error C2352: 'Project1::DeliveryChute::insertProduct' : illegal call of non-static member function
And this is causing the error:
if (Project1::DeliveryChute::insertProduct(pProduct) == false)
//THIS IS JUST ONE METHOD INSIDE ProductRack.cpp
bool
Project1::ProductRack::addProduct(Product* pProduct) {
// Todo : Implementing
if (Project1::DeliveryChute::insertProduct(pProduct) == false)
return true;
How do I call a class method which is defined in a .hxx file separately to a .cpp file? Is it any different from how we normally do it (using the scope resolution operator after the class name and then the method name with parameters) ?
I have a question similar to the one here: [URL] .....
The main difference is I would like to pass a method of derived class as a parameter to some other method in its template base class.
template <typename BaseType> class Base { public: typedef void (Base::*Callback)(int A);
[Code] .....
The above is an example which does not compile. My compiler complains that the two BaseMethod() calls in DerivedMethod() are invalid uses of non-static member function.
Is this not possible to do, or is my syntax simply wrong? All I want is to be able to pass as an an argument to a method in the base class from the derived class some callback as a variable for the base class to invoke later.
I've been writing my own implementation of quicksort in a .h file. I've gotten to the point where I think I'm done with the algorithm, so now I'm trying to make it so that if someone includes "quicksort.h", they will only have access to certain functions in the file. Kind of like public and private functions in a class, but without the "class" part of it. How do you do that?
I've finally managed to do something with the combo box but knock down one wall it's like there's another one five inches behind it. What I mean is I've figured out how to add items to the combo box and have them show images in my picture box. Only problem is when I went to debug my combo box kept looping it's options over and over and over.
Private Sub xpmaleskincolorselect.Items.Add("Tone1"); malesprite.Image = My.Resources.Resources.XP_Female_clear; xpmaleskincolorselect.Items.Add("Tone2"); malesprite.Image = My.Resources.Resources.XP_Male_tan; xpmaleskincolorselect.Items.Add("Tone3"); malesprite.Image = My.Resources.Resources.XP_Male_dark; End Sub
The subs, I know they aren't right but its just to show I know where they go. Anyway using Private Sub and End sub doesn't seem to work. I'll type them in then at the error box at the bottom it'll say that it doesn't exist in the namespace. Same thing happened when I tried to add public class beforehand to see if that would work same thing about the name space.
I'm trying to create a public and static field in a class called ResourceManager. But when trying to access the field even from inside the class it wont work. I'm getting this error message:
Error 1 error LNK2001: unresolved external symbol "public: static int ResourceManager::num" (?num@ResourceManager@@2HA)
Here's my code: ResourceManager.h
Code:
class ResourceManager { public: static int num; static void loadContent();
I need to call one function on my C++ program. I made one root calculator for functions, but, this doesn't work.
// FUNCION QUE CALCULA LA DIFERENCIA ENTRE 2 VECTORES real mn_error_vectores(Array1D< real > &u, Array1D< real > &v) { int i; if(u.dim()!=v.dim()){ printf("mn_error_vectores() : arrays of different dimensions
I have an example where I have a variable belonging to a base class, but I would like to tell the compiler that it actually belongs to a derived class. How can I do this?
// base class: R0 // derived class: R1 // see function SetR1 for the problem class R0 { public: int a;
I have an issue. VS 2013 isn't recognizing objects that I've declared when I use class functions.I'm getting this error: "Line 14 and 15: Error C2228: left of '.asciiToFpc6' must have class/struct/union"...Here's the relevant code:
Additionally VS apparently doesn't like my bitwise operators in my class functions and doesn't think they're doing anything. It gives "warning C4552: ['|', '<<', '>>', '&'] : operator has no effect; expected operator with side-effect" for all of them, but it seems to me the code should work fine and actually accomplish things....
I just wondering if a base class can call the overridden function from a Derived class?
Here's an example:
//Base Class H class BaseClass { public: BaseClass(); virtual ~BaseClass(); virtual void functionA();
[Code] ....
So basically, when I am creating a new object of Derived class, it will initialize BaseClass and the BaseClass will call functionA but I want it to call the function overridden by Derived class.
I know that if I call newObj->functionA it will call the overridden function. Right now I want the base class to call the overridden function "this->functionA(); in BaseClass" during its initialization. Is it possible to do that?
Full disclosure: this is an exercise from "Sams Teach Yourself C++ in 24 Hours" by Jesse Liberty and Rogers Candenhead. This refers to Chapter 9 (Hour 9 Activity 1)
I created a class called Point, in Point.h
I created a class called Rectangle in Rectangle.h and Rectangle.cpp
If I create an int main() function in Rectangle.cpp (that includes Rectangle.h), I can compile Rectangle.cpp and run the resulting program. Fine.
Question:
I create a separate file called main.cpp. I include Rectangle.h. But now the compiler complains.
Code: $ g++ main.cpp -o main /tmp/cc38JIph.o: In function `main': main.cpp:(.text+0x26): undefined reference to `Rectangle::Rectangle(int, int, int, int)' main.cpp:(.text+0x32): undefined reference to `Rectangle::getArea() const' collect2: ld returned 1 exit status If I can create a class in Point.h and use it in Rectangle.h, why can I not just use Rectangle in main.cpp?
And the files, of course:
file: main.cpp Code: #include <iostream> #include "Rectangle.h" using std::cout; using std::endl;
Having issues with program to create a shape area calculator with circle square and rectangle. the uml goes as follows:
Where the UML has shape as the abstract class with public area():double, getName():string,and getDimensions:string, rectangle derived from shape with protected height, and width, and a public rectangle(h:double, w:double), followed by a derived square from rectangle with just a public square(h:double), and finally a circle derived from shape with a private radius, and a public circle(r:double).
[URL]
Have linked my program and it is giving me the following compiler errors:
error: 'qdebug' was not declared in this scope line 15 of main
error: cannot declare variable 'shp' to be of abstract type 'shape' line 22 of main
error: expected primary-expression before ')' token lines 29 -31 of main
(note previously had qstring as a header file yet changed to string since I was getting error qstring was not declared in this scope.)
Basically, I have a base class called MainShop and it has 3 derived classes which are SwordShop, SpellBookShop and BowShop. I want the base class to be able to call a function from one of the derived classes but no matter what i do, it doesn't seem to work!
I have two other derived classes, but its basically the same concept. I have a function in one of the derived classes and i would like to call it from the base class. This is one my derived classes:
I am trying to write a program that will take a list of integers from a file and write them to another text file. I've been banging my head at this for days trying to get it to compile as it is riddled with linker and compiler errors.
Basically am trying to reference a method in a my Form1 class into another class. So far I have tried multiple different methods to try and access the method but have not managed it so far. Both classes use the same namespace. The part of my form class that I am using are as follows:
public class Form1 : Form { IContainer components = null; private ButtonPanelThread p1, p3, p4;
When the below is done, does it call the constroctor only, and if yes, constructors do not have return types so how does it work? is there anything behind the scene?
wxAddHandler(new wxPNG_HANDLER); and sf::RenderWindow(sf::VideoMode(...),...);
In here, T can be from the class CMesh * or CSkinnedMesh *, both have signature of GetAnimController
This maybe a flaw in my design... But I want Create to accept any kinds of meshes.
Should I create an interface or abstract class above all of those?
I have added an IMesh class that every derived classes has to have the needed interface.
But since then, I have another question, I feel that it is very cumbersome to include a template argument in every class/prototype that is associated with CObject
Say bool CreatePlanesFromObject(CObject *pObject, D3DXPLANE *pPlanes); Requires me to do this template<class T> bool CreatePlanesFromObject(CObject<T>* pObject, D3DXPLANE* pPlanes);
Any ways I can omit the template argument, because it doesn't make sense to know the Mesh type in other classes...
it seems that I cannot define a method of an inner nested class if it is a private class. for example:
class outter { class nested { void foo ( void ) {} // okay - but is this inline? } void inner::foo( void ) {} // not okay - cannot define inside another class } void outter::inner::foo( void ) {} // not okay - 'nested' class is private!
what I want to know is, is there another way to define an inner class's method? and if not, is it eternally doomed to be inline because it has to be declared inside it's own class declaration?
I have been trying to calculate the bond price given a certain YTM using class method. Since the YTM and bond price are linked with each other(there is another question asking us to calculate the YTM with a given price),we put price and YTM in "private" and others variables in"public". Actually, this is the format given in my assignment.
I used "getvalue" to get the value of YTM, and used YTM in the formula of bond price calculation. However, the output of the price is infinite, while the output of price is right if I used a specific value of YTM(such as 0.05) in the formula. It means that I didn't successfully get right value of YTM.
#include <iostream> #include <cmath> using namespace std; class bond{ public: bond(){};
I am having problems invoking methods in a nested class using reflection. I have the following:
A parent class, Group, that holds instances of a simple class called Signal. I want to modify the number of instances inside the group class often. So, all my code has to be dynamic and use reflection to know how many instances of signal there are inside the Group class.
class Group{ public static Signal name1 { get; set; } public static Signal name2 { get; set; } public static Signal name3 { get; set; }
[Code]....
I had no luck invoking the method of the instances of signal class that are inside the Group class. I tried getting the methods name using getMethods() but could not navigate through the syntax.
How could I invoke and pass parameters to the method of the instances of signal using reflection? Is there a better way of accessing the properties and methods of nested classes?