Mình đang thử tạo 1 Class mới trong VC++ 2008 như sau:
Code:
// WinSockClass.h
#include "Stdafx.h"

#pragma once

using namespace System;

namespace WinSockClass {

	public ref class SockClass
	{
		private: WSADATA wsaData;
		//private: WSADATA* wsaData;

		public: SockClass(void)
				{

				};

		public: int Test()
				{
					int iResult = WSAStartup(0x0202,&wsaData);
					if (iResult!=0) return 0;
					WSACleanup();
					return wsaData.wVersion;

					//WSADATA wsa;
					//int iResult = WSAStartup(0x0202,&wsa);
					//if (iResult!=0) return 0;
					//WSACleanup();
					//wsaData = &wsa;
					//return wsa.wVersion;
				};

		/*public: int T()
				{
					WSADATA wsa;
					wsa = *wsaData;
					return wsa.wVersion;
				}*/
	};
}
với file Stdafx.h được khai báo như sau:
Code:
#include <tchar.h>
#include <WinSock2.h>
#include <stdio.h>
#pragma comment (lib,"ws2_32.lib")
Vấn đề mình gặp phải là nếu khai báo "private: WSADATA wsaData;" và dùng đoạn code hiện tại trong hàm Test, thì bị báo lỗi
"error C4368: cannot define 'wsaData' as a member of managed 'WinSockClass::SockClass': mixed types are not supported".
Nếu mình khai báo "private: WSADATA* wsaData;" và thay các đoạn code trong dấu "//" vào chương trình, thì chạy ổn. nhưng kết quả trả về của 2 hàm Test và T là khác nhau ( luôn là Test = 514 (đúng) và T = 65535 (sai)).
Mình muốn giá trị của *wsaData không đổi sau khi thoát khỏi hàm Test(), vậy phải giải quyết như thế nào? Mong các bạn chỉ giúp. Mình cảm ơn rất nhiều.