Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ Core » Big issue with Visual Studio 2019 (some versions)
Re: Big issue with Visual Studio 2019 (some versions) [message #53018 is a reply to message #53011] Sun, 09 February 2020 14:33 Go to previous messageGo to previous message
Alboni is currently offline  Alboni
Messages: 214
Registered: January 2012
Location: Deventer, Netherlands
Experienced Member
Yeah, don't break your computer.

I came up with this:

#include <iostream>

typedef unsigned char bYte;
#define min(a,b) ( a<b ? a : b )

class B;

class A {
	public:
		bYte data[256]; bYte datalen;
		
	public:
		A(const void* b, bYte len); // assign binary data
		A(char* string); // assign C string
		A(B& b);
		operator char*() // to c string
		{
			data[sizeof(data)-1]=0;
			return (char*)data;
		};
};

class B {
	public:
		bYte data[256]; bYte datalen;
		
	public:
		B(const void* b, bYte len); // assign binary data
		B(char* string); // assign C string
		operator char* ()  // to c string
		{
			data[sizeof(data)-1]=0;
			return (char*)data;
		}
};


A::A(const void* b, bYte len) // assign binary data
{
	datalen = min(len, sizeof(data)-1);
	memcpy(data, b, datalen);
	data[datalen]=0;
}

A::A(char* string) // assign C string
{
	datalen = min(strlen(string)+1, sizeof(data));
	memcpy(data, string, datalen);
	data[sizeof(data)-1]=0;
}

A::A(B& b)
{
	datalen = b.datalen;
	memcpy(data, b.data, sizeof(data));
}

B::B(const void* b, bYte len) // assign binary data
{
	datalen = min(len, sizeof(data)-1);
	memcpy(data, b, datalen);
	data[datalen]=0;
}

B::B(char* string) // assign C string
{
	datalen = min(strlen(string)+1, sizeof(data));
	memcpy(data, string, datalen);
	data[sizeof(data)-1]=0;
}

A ReturnB()
{
	const char binary[10] = {1,2,0,3,4,5,6,7,8,0};
	B b(binary, 10);
	return b;
}

int main(int argc, const char *argv[])
{
	A a = ReturnB();
	int len = a.datalen;
	std::cout << "This should return 10 and it returns " << len << "\r\n";
	return 0;
}



[Updated on: Sun, 09 February 2020 14:44]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Vector initialization
Next Topic: Configurations [Solved]
Goto Forum:
  


Current Time: Mon May 06 03:16:38 CEST 2024

Total time taken to generate the page: 0.01789 seconds