I'm trying to create a class that I don't want anyone to be able to create a handle to, aside from another specific class. In native c++, I could this by just declaring the creator class as a friend to the class I'm restricting creation for. However, in C++/CLI, it won't allow me to have friends for a managed type.
Does anyone know how I could get around this problem?
The absence of friend classes is a real problem in .NET, IMO. I'm not sure there's a way around it, if you want the actual class visible, but not the ability to create. Does your class derive from anything right now ?
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
Hi! I'm learning about linked lists and have created the following class:
struct Node<br />
int data;<br />
Node *next;<br />
Node *prev;<br />
class BasicList<br />
/* CONSTRUCTORS / DESTRUCTORS */<br />
BasicList(); // Default Constructor<br />
/* INSERTION METHODS */<br />
void Prepend(int n); // Insert n into list as the first item<br />
void Append(int n); // Insert n into list as the last item<br />
void InsertAfter(int key, int n); // Insert n into list after key<br />
void InsertBefore(int key, int n); // Insert n into list before key<br />
void Swap(int first, int second); // Swap specified elements<br />
void Remove(int key); // Remove first occurance of key from list<br />
/* QUERY METHODS */<br />
void DisplayNodes() const; // Display the data item from each node in the list<br />
bool IsEmpty() const; // Return true if the list is empty<br />
int Maximum() const; // Return the largest member in the list<br />
int Minimum() const; // Return the smallest member in the list<br />
int Occurances(int key) const; // Return the number of occurances of key<br />
int NumNodes() const; // Return the number of nodes in the list<br />
/* HELPER FUNCTIONS */<br />
Node *GetAddress(int n); // Returns the address of the first instance of n found in list<br />
int *GetDataArray(); // Return a pointer to an array containing the data. Last item in array is NULL<br />
/* MEMBERS */<br />
Node *head; // pointer to empty head node<br />
Node *tail; // pointer to empty tail node<br />
All the functions work wonderfully so far. I want to add a method that will sort the linked list data. I'm not really sure where to begin. I checked Wikipedia, and found the following URL which presents a MergeSort algorithm. I'm not sure if this is the best way. Any opinions?
We are planning to work on a project. The client side will be created with VB.net. This VB.net will call the backend of c code. I did the similar thing with php to call the backend of c code. The bridge between the php and c code was created with php extension for wrapping c code. Could you give a suggestion what kind of bridge will be created between VB.net and c code?
what kind of bridge will be created between VB.net and c code?
VC++ has "managed extensions". You can create "mixed mode" projects. What you want is a mixed mode Class Library. The .NET classes that you author in this library will then call into the "native" C code. When authoring such code you will be handling the marshalling of data from native memory into managed memory and managed memory into native memory where ever it is required.
The .NET classes you author can be used from any .NET compiler including VB.NET.
Thank you very much for your reply. But our project requires that the client side will be implemented in VB.NET, the backend was implemented in C, which will talk with hardware device. I need to make a bridge between VB.NET and C. Any good suggestion?
I'm a student working towards a BS in CS. I use Visual Studio C++ as my IDE.
I go through a lot of paper writing out solutions to problems. I've found that this greatly helps me when designing my code and it's something I've found suggested many many times.
Last year, I was playing around with Visual Studio 2005 Beta and found something called "Whitehorse." It was excellent! It allowed me to create diagrams and drawings of my code. It actually would generate drawing and diagrams from my code and modify my code to match a diagram if I asked it to.
I haven't found similiar functionality in Visual C++ 2005 Express. I'm (very sadly) assuming that it's not there.
I'm REALLY hoping that someone may have an alternative solution for something that works well, and is free. I REALLY appreciate any suggestions.
I've written a library in VC++.NET2003 with 1 exposed class and 2 Inner classes:
WinInet Wrapper used in making HTTP requests through WinInet APIs (InternetOpenW, InternetOpenUrlW, InternetReadFile).
MSHTML wrapper used in extracting text/links out of HTML. All the interaction with the MSHTML is done through mshtml.h
Exposes various functions to make HTTP requests, transform the HTML data etc.
Above library is used in a C# GUI application. This app spawns upto 50 threads and in each of these threads, C++ library will be called.
I'm very much new to C++, but after going through various articles and source code examples, I've written the library and it is working fine if used sporadically. But in the Multithreading scenario, memory is shooting up and CPU usage was also very high. Read somewhere to rename/delete the below given Reg key:
I'd changed the Zonemap name to Zonemap1. Since then the CPU usage has come down but the memory problem remains.
Prior to writing the C++ library, used MSXML3 (xmlHTTP) and mshtml.dll in C# itself. But Microsft specifically says not to use MSXML in .NET. Though MSXML was quite fast, it also consumed tonnes of memory.
Now I'm at a crossroads and not sure which one is causing the problem:
Using the above in multiple threads.
Could some one tell me what is causing the problem or point out to links\articles?
But in the Multithreading scenario, memory is shooting up
I would "guess", which is not the right way to optimize (use a profiler), that MSHTML is "a" source of significant memory usage.
MSHTML is parsing the HTML and creating an Element structure, probably a tree or something. That is going to take some memory. If you load 50 of them it will take 50 times the memory right?
MSHTML wrapper used in extracting text/links out of HTML
So if you replaced MSHTML with a parser that finds the "text/links" without loading the entire HTML document into memory then that should reduce memory usage. Again without using a profiler this is just a "guess".
In C# I could remove security check on an C DLL call by tagging my function as follow:
static extern void SomeMethod();
In Managed C++ I don't declare the function I just #include the headers.
When I try to compile the program I get c2352 errors (illegal call of non-static member function). I think there is something small that I am missing but I am not sure what it is. I have tried many different versions of this code, and placing it in different parts of the code, etc. Any help would be greatly appreciated.
p.s. I am working on a windows forms application with vs2005 c++ express.