|
Well, you can cast a pointer to an object - in the same way that you can eat poisonous mushrooms: only once. (provided you manage to get past the compiler that is trying to save you from that embarassement)
|
|
|
|
|
Well, yes you can do anything you like ...
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Please check this.
void AssignValue(ClassName* ptrValue)
{
ClassName& localObject = *ptrValue;
obj1 = localObject;
}
|
|
|
|
|
Yes, I was about to suggest this, but there is an error in this code: you cannot define a reference that is not const - it has to be
const ClassName& localObject = *ptrValue;
[edit]forget what I wrote next...
Instead of your suggestion, you could just do the assignment directly:
obj = *ptrValue;
Assuming that you have a valid implementation of the assignment operator, this should work.
[/edit]
modified 25-Oct-12 7:41am.
|
|
|
|
|
According to the compiler this will not work because obj1 is not a modifiable lvalue; it is an existing object, and cannot be set to something else.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
That is not my understanding, unless you are using a compiler where ClassName has a very specific predefined meaning. I was assuming that was just meant as a synonym for the actual class rather than a keyword. E. g. this should work:
class foo {
int val;
public:
foo(int v) : val(v) {}
int get() const { return val;}
};
class ABC {
foo obj1;
public:
void AssignValue(foo* ptr) {
obj1 = *ptr;
}
};
At least my compiler accepts it.
|
|
|
|
|
You are correct; I had to add default constructors (MS C++), but it then did what was required.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Yes, but this changes obj1 , which may or may not be what the original question didn't want (if the object is expensive to copy, making it a pointer rather than object, as previously suggested, might be the better solution).
If AmbiguousName has worked more with C# or Java, where the references are implicit, working with pointers might be confusing.
|
|
|
|
|
Well, not only his name is Ambigous, his inquiry is, too: it isn't clear whether his problem is that he cannot assign to obj1, or that he cannot assign it from a pointer. Anyway, the solutions have been pointed out, he just needs to pick the right one.
|
|
|
|
|
Have you tried to change that line of code to this
obj1 = *ptrValue;
This will make your obj1 member variable be a copy of the object that is pointed to by ptrValue.
Chris Meech
I am Canadian. [heard in a local bar]
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]
|
|
|
|
|
So have you tried creating an assignment operator in the ClassName class?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
AssignValue is a clear hint of what you intend to do: assign to the object obj1 the value held by the object pointed by ptrValue , hence
void AssignValue(ClassName* ptrValue)
{
obj1 = *ptrValue; }
Note you should define the ClassName assignment operator in order to make such code work.
Veni, vidi, vici.
|
|
|
|
|
Much clearer answer, I think.
Chris Meech
I am Canadian. [heard in a local bar]
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]
|
|
|
|
|
Hello Friends
I was using code
void CMainFrame::OnInitMenuPopup(CMenu* a, UINT b, BOOL c)
{
FrameWnd::OnInitMenuPopUp( a,b,c);
}
And this one displaying MenuItems correctly.
Now,i trying to add icons to MenuItems.So for that I am using extenal CoolMenuManager to show up Icons with menuItems.
Here is code for this :
void CMainFrame::OnInitMenuPopup(CMenu* a, UINT b, BOOL c)
{
if(m_menuManager.InitMenuPopup(a,b,c))
FrameWnd::OnInitMenuPopUp( a,b,c);
}
Now, in this case,If i use External fn then only icons are showing up. But as now, i am calling frameWnd::OnINitMenupopup too then icons are coming and strings are not coming properly and only for some menuItems and even menuList is coming Wider covering whle screen.
Any Ideas?
Regards
Yogesh
|
|
|
|
|
Without knowing what CoolMenuManager does it is impossible to even hazard a guess.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Hello
I found something interesting tht icons and text of menuItem is coming fine Except the menuList. As i click on any menu,menuList pops up and that list is coming wider,covering almost full screen.
I checked that OnMeasureItem which calculates ItemWidth and height is Having some Prob.As I Converted this from VC6 to VS2010.
BOOL CCoolMenuManager::OnMeasureItem(LPMEASUREITEMSTRUCT lpms)
{
ASSERT(lpms);
CMyItemData* pmd = (CMyItemData*)lpms->itemData;
ASSERT(pmd);
if (lpms->CtlType != ODT_MENU || !pmd->IsMyItemData())
return FALSE;
if (pmd->fType & MFT_SEPARATOR) {
lpms->itemHeight = GetSystemMetrics(SM_CYMENU)>>1;
lpms->itemWidth = 0;
} else {
CWindowDC dc(NULL); CRect rcText(0,0,0,0);
CFont* pOldFont = dc.SelectObject(GetMenuFont());
dc.DrawText(pmd->text, rcText, DT_MYSTANDARD|DT_CALCRECT);
dc.SelectObject(pOldFont);
lpms->itemHeight= max(GetSystemMetrics(SM_CYMENU), rcText.Height());
int cx = rcText.Width(); cx += CXTEXTMARGIN<<1; cx += CXGAP; cx += m_szButton.cx<<1;
cx -= GetSystemMetrics(SM_CXMENUCHECK)-1;
lpms->itemWidth = cx;
CMTRACE(_T("OnMeasureItem for '%s':\tw=%d h=%d\n"), (LPCTSTR)pmd->text,
lpms->itemWidth, lpms->itemHeight);
}
return TRUE; }
or u can refer to this link
http://www.codeforge.com/read/89577/coolmenu.cpp__html[^]
Regards
Yogesh
|
|
|
|
|
I found tht Drawtext with parameter DT_CALCRECT is not returning right parameters of rectangle.
Any Ideas ?
|
|
|
|
|
Sorry no, what values does it return and what values do you think it should return?
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Mark, I want to research it.
|
|
|
|
|
Dear All
I wrote an application some time back in Visual C++ 6 and used Chartfx for some stuff. It works fine on XP as long as you register the cfx4032.ocx and the sfxbar.dll using regsvr32 prior to running it. I now need to run the application on Win7 32 bit. The application itself seems to run but I can't get a DLLRegisterServer failed 0x80020009 error when I try to register the cfx4032.ocx and sfxbar.dll using regsvr32.
Are there newer version of the ChartFx stuff that I can use without recompiling the application or some other way that I can solve this problem. I need the application in a few weeks time for a training course and then not much there after so I am reluctant to put too much effort it.
Thanks for any help that you can provide.
Regards
Andrew Hoole
|
|
|
|
|
Andrew Hoole wrote: ...but I can't get a DLLRegisterServer failed 0x80020009 error when I try to register the cfx4032.ocx and sfxbar.dll using regsvr32. I assume you meant you do get an error.
Does regsvr32 need to be run as an administrator on the Win7 box?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Sorry yes I certainly do get an error. Not sure about the Administrator thing I'll have to give it a go.
|
|
|
|
|
Yes it would appear that running it as administrator solves the problem.
Thanks
|
|
|
|
|
As mentioned in the other answer, you will need to run regsvr32 as administrator on Windows 7 to register the ocx control.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
Chartfx, first time I know it.
|
|
|
|