Author |
Topic |
|
steve.thresher
New Member
United Kingdom
8 Posts |
Posted - Dec 23 2004 : 08:47:26 AM
|
I'm using VAX with VS.NET 2003 and it refuses to recognise the get_text_ref() function in the following class:
<code> class CTest { private: char m_text[10];
public: CTest(const char (&text)[10]) { memcpy(m_text,text,sizeof(text)); }
const char (&(get_text_ref)(void) const)[10] { return(m_text); }
const char *get_text_ptr(void) { return(m_text); } }; </code>
If I attempt to use the class as follows:
<code> char text[10]={'A','B','C','D','E','F','G','H','I','J'};
CTest test_object(text);
char output[11]={0}; memcpy(output,test_object.get_text_ref(),sizeof(test_object.get_text_ref()));
printf(output); </code>
The code compiles OK and does what I expect (output the 10 characters A-J) but VAX refuses to list the get_text_ref() function after pressing the '.' character at the end of test_object. All I get listed are the member variable, constructor and get_text_ptr() member function.
Can anyone suggest what the problem is? I have included the VAX version information below if that makes any difference.
VA_X.dll file version 10.1.1287.0 Licensed to: VA X: conrad at systemsaxis.co.uk (8-user license) Support ends 2005.10.07 VA.NET 7.1: VAOpsWin.dll version 1.2.0.4 DevEnv.exe version 7.10.3077.0 msenv.dll version 7.10.3077.0 Font: Courier New 11(Pixels) Comctl32.dll version 5.82.2900.2180 WindowsNT 5.1 Build 2600 Service Pack 2 Single processor
Platform: Custom Stable Includes: C:\\Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\ATLMFC\\INCLUDE; C:\\Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\INCLUDE; C:\\Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\PlatformSDK\\include\\prerelease; C:\\Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\PlatformSDK\\include; C:\\Program Files\\Microsoft Visual Studio .NET 2003\\SDK\\v1.1\\include; C:\\Program Files\\Microsoft Visual Studio .NET 2003\\SDK\\v1.1\\include; c:\\axis\\bin; c:\\axis\\include;
Library Includes:
Other Includes:
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Dec 23 2004 : 4:19:03 PM
|
coping your code into a C++ header file i am seeing:
here i have told VAX to colour function names orange. as you can see "get_text_ref" is not being coloured as a function. it seems that VAX does not understand this bit of code, so it is not detecting this function.
to be fair, i know how VAX feels about this! i don't really understand this code either.
case=477 |
zen is the art of being at one with the two'ness |
|
|
steve.thresher
New Member
United Kingdom
8 Posts |
Posted - Dec 24 2004 : 06:57:11 AM
|
The code compiles fine using both VS.NET 2003 (compiler level 4) and Borland 5.5 command line tools. Does the following make the code any easier to follow?
Variable that is a reference to a ten character array
char (&var)[10]
Function returning a reference to a 10 character array
char ((&fn)(void))[10]
Function returning a const reference to a 10 character array
const char ((&fn)(void))[10]
Member function returning a const reference to a 10 character array that doesn't modify member variables.
const char ((&CTest::fn)(void) const)[10]
|
|
|
rblondeau
Tomato Guru
Canada
102 Posts |
Posted - Dec 25 2004 : 01:12:30 AM
|
Although I do not doubt that all of the above examples work, I would have to say that the fact that I have never seen this technique described before would indicate that it is not something that is very commonly done. It is most likely for this reason that VAX does not handle it correctly.
That being said, it is nice to see something new (to me anyhow) that I can chew on. |
|
|
jpizzi
Tomato Guru
USA
642 Posts |
Posted - Dec 27 2004 : 12:32:13 AM
|
Is this perhaps C# code? I put this into a C++ file in VS .NET 2003, and get error C2090: function returns array
|
Joe Pizzi |
Edited by - jpizzi on Dec 27 2004 12:32:48 AM |
|
|
steve.thresher
New Member
United Kingdom
8 Posts |
Posted - Dec 27 2004 : 08:32:00 AM
|
It is not C# code |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Dec 29 2004 : 2:22:59 PM
|
quote: Originally posted by steve.thresher
The code compiles fine using both VS.NET 2003 (compiler level 4) and Borland 5.5 command line tools. Does the following make the code any easier to follow?
Variable that is a reference to a ten character array
char (&var)[10]
my brain is trying to throw an exception at this point
i look at this, and i find myself thinking this is actually an array of 10 references to char. i think the basic problem is you are doing something with C++ the rest of us are not familiar with
it is worth remembering that the VAX parser can be called "good enough", it cannot do everything a compiler can, since it does not have the same luxury of constant files and all the time in the world that the compiler has.
quote: Originally posted by jpizzi
Is this perhaps C# code? I put this into a C++ file in VS .NET 2003, and get: error C2090: function returns array
interesting, it compiles without any warnings or errors for me. i just copy and pasted the class into one of my header files, and .NET 2003 was quite happy. this is a fairly new project, mostly using the default settings for warnings, etc. i have turned RTI on though. |
zen is the art of being at one with the two'ness |
|
|
steve.thresher
New Member
United Kingdom
8 Posts |
Posted - Dec 30 2004 : 04:30:07 AM
|
I know its unusual, most people would store strings with std::basic_string or CString rather than arrays of text but the code is correct. If you use the debugger with the test class from my original post and step into the constructor you will see the parameter passed is a reference to the array not an array of references.
I would like to mention at this point (before I sound too much like a moaning old git) that I do think VAX is an excellent product that has saved me a huge amount of time on looking up defines and function prototypes. I was the one who introduced the product to our other developers and nagged the boss to buy the licences |
Edited by - steve.thresher on Dec 30 2004 04:43:24 AM |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Dec 30 2004 : 4:31:29 PM
|
LOL good answer
well this is in the list of things for the WT developers to look at. however i cannot give you any time scale, since the list is rather long, and it keeps on growing. i think this has something to do with all the cases i keep on raising |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|