C++ :: Nested Classes - How Members Be Accessed Through Object Of Enclosing Class Type
May 18, 2013
"A nested class has free access to all the static members of the enclosing class. All the instance members can be accessed through an object of the enclosing class type, or a pointer or reference to an object."
How can the members be accessed through an object of the enclosing class type? I understand the pointer and reference part because for them you dont need the full definition, but for creating a object you do?
Also it has free access to all static members because the nested class is part of the enclosed class and with static it exists in everything inside the enclosing class? Right or am I missing something?
Suppose I have a class "A", which has a method "void AMP_call()" that calls paralel_for_each in which another method, "float amp_function(float) restrict(amp)". When I call that method, can it then use members of "A"?
class A { void AMP_call(); float amp_function(float) restrict(amp); // do something on a device float allowed_variable; std::vector<bool> not_allowed;
[Code] ....
Another way to frame my question, perhaps to make it easier to understand what I am after, would be that I want to know what happens if an amp-restricted method is called where the body of the class itself (which is not amp-compatible and afaik doesn't have to be since it's not passed to the device) may contain members that are not amp-compatible.
All of the msdn blogs I could find deal with which functions and methods can be called from within a parallel_for_each loop, but not with which variables are available to the lambda function itself.
I have two classes, a Package class and a Person class. The Package class has two Person objects has member variables, a Sender and a Receiver. While overloading the << operator for the Package class so that it will make an output label from everything in the Package class. Here is my code...
class Package{ public: Person Sender; Person Reciever; int weight; double cost; friend ostream &operator<<(ostream &out, Package &pack);
[Code] .....
So my problem is on that last output line, I am unable to call Sender.getName()... etc. Is there a proper syntax so that I can access the members of the Person class while overloading the << operator for the Package class?
I am getting a compilation error from the code below. It is when i am naming a variable with my user defined type.
#include<iostream> #include<cstring> #include<cstdlib> using namespace std; class person {
[Code] .....
C:Dev-CppTRIAL.PASS.!!!.cpp In function `int main()': 66 C:Dev-CppTRIAL.PASS.!!!.cpp expected primary-expression before "p" 66 C:Dev-CppTRIAL.PASS.!!!.cpp expected `;' before "p" 74 C:Dev-CppTRIAL.PASS.!!!.cpp `p' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) 83 C:Dev-CppTRIAL.PASS.!!!.cpp `X' undeclared (first use this function)
#include <list> #ifdef TICKABLE_EXPORTS //Automatically defined by MSVS #define DLL __declspec(dllexport) #else #define DLL __declspec(dllimport) #pragma comment(lib, "Tickable.lib") #endif
class DLL Tickable{
[Code] ....
error LNK2001: unresolved external symbol "private: static class std::list<class Tickable*,SKIPPED BITS> Tickable::subs" HUGE_SYMBOL_LIST PATHTickable.obj
I know with such a tiny and insignificant class the dll export seems pointless but this class is actually intended to be a .lib ONLY. But it is derived from by .dll style classes, and through inheritance this error is the exact same as what appears in the derived class, I just imagine that the cut down version would be easier to work with.
Is it possible to hold either a static variable in a dll which is of a dynamic type, OR would it be possible to reference an external variable which is static throughout the instances and this variable can be chucked away in a namespace of mine somewhere?
I suppose my only other option (if this is possible) would be to define a maximum instance number and create a standard array of pointers but this could both waste so much memory when not in use and cause problems if I need more memory.
/** This class build the singleton design pattern. Here you have full control over construction and deconstruction of the object. */ template<class T> class Singleton
[Code]....
I am getting error at the assertion points when i call to the class as follows:
I'm working on a project involving nested classes and structs like this:
Code: class A { public:class B { public:f() {A::C* iCanDoThis; //no errors. iCanAlsoDoThis->root->.... //this also works fine.}private:A::C* iCannotDoThis //this is what I would like to do. Has errors A* iCanAlsoDoThis;};private:struct C {..data..};
C* root;};
Is it possible make a pointer to struct C a private member of class B?
how I would execute a nested class in a linked list... As example;
[Character][Weapon][Spell] classes are children of a [Base] class that stores normalized information such as 'Name'...
I am aiming to have a unique Character with a unique Weapon and Spell. I am trying to link-list these to have multiple characters. I just can't apply the design logic into programming logic.
cNode.h #pragma once #include "Includes.h" class cNode
I have a program to make a contact book. Included below i will post both header files and cpp files of my contact book, my contact class, and my address class. and my main.cpp. The reason address and contact are separate was because my teacher had us do an exercise where we used a header file of someone else's code, and didn't know what the functions actually implemented. But as the project has progressed he gave us the cpp for address.
I've been reading the tutorials on Friendship and Inheritance [URL] ..... but I still don't understand why I can't access members of the same struct type.
The code above is located in a source file, where the function isAlphanumeric passes a char value, and Message is the struct containing the string I want to access. Below is the declaration of the struct and string located in the corresponding header file.
My frustration comes when I try to call and assign messageText like the tutorial does to its private members, but I keep getting an error saying I can't access the string because it is a private member. Is there a way to access the string without having to pass it through the function wordBeginsAt?
I am to first increment data members of object that has not created dynamically (i have done with this part),now i have created object dynamically and how to increment its data which i have passed as argument as:
I've got two classes, which are both derived from the same two base classes. Here's a representation of the actual code:
Code: #include <vector> class BaseClassA { }; class BaseClassB { }; class TestClassX : public BaseClassA, public BaseClassB
[code].....
Basically, I'd like to know if it is possible to cast directly from a BaseClassA pointer to a BaseClassB pointer, without casting to the child class first.
I have a WordRecord that contains a LinkedList (both my doing). I have rigorously tested my LinkedList class, and know that it works (heck, I used it in the last project I had!). The problem is that undefined behaviour seems to happen when using the WordRecord, which has a std::string and a LinkedList<unsigned>. (The problem happens with the LinkedList.)
Here is the code:
main.cpp #include <iostream> #include "BinaryTreeNode.h" // here for test purposes #include "LexicographicTree.h" #include "LinkedList.h"//also for test purposes #include "OutputStream.h" #include "WordRecord.h" using namespace std; int main() { // setup the OutputStream to print to "test.txt" OutputStream stream("test.txt"); // create a sampleWordRecord (make it have the word "I" on line 1)
[code]....
One of the requirements for the project is that it must compile on Unix server (I am using Windows, and have tested it in both environments.) I get a core-dump in the Unix environment. On the other hand, the output on-screen in the Windows environment looks right. However, when I open up the text file, I get the following
Sample word record:
WordLines I{14} /* I have no what is happening to sampleWordRecord's LinkedList; I am not trying to modify it, except for where I created the sampleWordRecord! */
This refers to an ATL COM DLL project. I can successfully create a class hierarchy of objects, ie. say, one class is the TEAM, which then holds other objects, say, a leader and a secretary, both of which are Employee Classes . Here goes my question:
a) In the Team.h header file I declare m_pLeader as a CComPtr<IEmployee>
Code: classATL_NO_VTABLE CTeam : public CComObjectRootEx<CComSingleThreadModel>, public CComCoClass<CTeam, &CLSID_Team>, public IDispatchImpl<ITeam, &IID_ITeam, &LIBID_BUOBJ05Lib, /*wMajor =*/ 1, /*wMinor =*/ 0> { private: CComPtr<IEmployee> m_pLeader; CComPtr<IEmployee> m_pSecretary;
b) The Employee Class is defined within this ATL COM project. c) In the Team.cpp file, I create an instance in the FinalConstruct code, the focus is on the CEmployee
Code: HRESULT CTeam::FinalConstruct(){ CComObject<CEmployee>* pLeader; HRESULT hr=CComObject<CEmployee>::CreateInstance(&pLeader); if (FAILED(hr)) return hr; m_pLeader=pLeader; // ..same for secretary... return S_OK }
d) Here comes my QUESTION: How must I proceed if the Employee object was part of another ATL COM DLL, that is it would be described in another DLL that I would now like to reuse? I guess I need to
1. Have the other DLL's idl-, tlb, and h file in my project folder. Let me name it "other.h, other.idl, other.tlb"
2. Both h- and cpp-file must have an #include "other.h" statement -- please correct if I am wrong..
3. ...but how must in the Team's h- and cpp-files the statements be (assuming the class in the "other" Dll is Member (instead of Employee? I know the following code will NOT work, so I am asking how it should be correctly?
when vpStatus is nonsense and unknown, the vaporPressure should not have a value; and if I calculate out a value for vaporPressure, the vpStatus can be set as known.
I am wondering if there is any set, pair or other structure can hold this two members together, so that when I change one's value, the other guy will also change accordingly.
I've been creating an API and I'm now stuck on callbacks. There are many APIs that allow callbacks to class members(e.g. Windows API) using a void pointer to the object. I've searched the internet for hours and I can't find one example of how to use the "hidden object parameter" of an class method pointer that doesn't use std::function/bind or boost::function/bind. Any information on how API's like Windows API are able to use class methods as callbacks