Solved

Derive from CString, but access CString buffer (VS2005)

Posted on 2007-04-09
4
1,308 Views
Last Modified: 2013-12-14
Hi,

I'm copying code from a VC++ 6.0 project to VS 2005. The code has a string class derived from CString in which some members of CString are accessed (m_pchData, GetData()). The code compiles in VC6 but not in VS2005. I need to be able to do:

class CStringEx : CString
{
public NewFunctionEx()
{
   // Access private members of base CString
   char* inside_buffer = m_pchData;
   // OR
   char* inside_buffer = GetData();
}
};

It's just the syntax is tricky since it's a template class and I guess the members are private now...?
0
Comment
Question by:alexatsearidge
  • 2
4 Comments
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 18878397
What is the error which you are getting while compiling it in vs2005?
0
 
LVL 9

Accepted Solution

by:
Priyesh earned 500 total points
ID: 18880330
I think these changes happened in the mfc release with VS2003.
m_pchData is changed to m_pszData and made private. GetData is private. You will have to use GetBuffer to get to the buffer.
0
 

Author Comment

by:alexatsearidge
ID: 18882087
Yeah, when I used GetBuffer() I would get

C2663: 'ATL::CSimpleStringT<BaseType,t_bMFCDLL>::GetBuffer': 2 overloads have no legal conversion for 'this' pointer

But today I found I could get over it with ((CString*)this)->GetBuffer().

We'll see if it works, but before I can compile, I need to solve one more error. The code I'm using calls a method AllocCopy() that evidently allocates a string and copies a substring from an existing string to it. There is no definition for this method anywhere in the project, so I'm wondering if AllocCopy was ever a CString method?
0
 
LVL 9

Expert Comment

by:Priyesh
ID: 18882633
It seems it was a protected member function in CString
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A short article about problems I had with the new location API and permissions in Marshmallow
Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question