473,786 Members | 2,849 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

construction question

Hello,

Consider the following example. There is a function

foo(Foo1<Foo2fo o1) { ... }

The class Foo1 has an empty constructor.

Foo2 can be constructed from an instance foo3 of Foo3.

Can I call:

foo(foo3);

?

Thanks,

JG

Nov 20 '06 #1
11 1373

John Goche wrote:
Hello,

Consider the following example. There is a function

foo(Foo1<Foo2fo o1) { ... }

The class Foo1 has an empty constructor.

Foo2 can be constructed from an instance foo3 of Foo3.

Can I call:

foo(foo3);

?
The parameter of the function foo is of type Foo1<Foo2>. The object you
pass when you call foo must therefore be of type Foo1<Foo2or of some
type that can be converted to Foo1<Foo2>. So the only question that
matters is, can an object of type Foo3 be converted to type Foo1<Foo2>.
Unless the answer is yes, your code will not compile.

The fact that a Foo2 can be constructed from a Foo3 is irrelevant. The
function foo does not take a Foo2, it takes a Foo1<Foo2>, which is a
completely different type.

In types that might be more familiar: if Foo1 is std::vector, Foo2 is
std::string and Foo3 is const char*, you have

void foo(std::vector <std::stringv ) { ... }

and you are trying to do

foo("some string literal");

A std::vector<std ::stringcan not be constructed from a string literal
so the code will not compile. A std::string can be constructed from a
string literal, but that is irrelevant because we are not trying to
construct a std::string, we are trying to construct a
std::vector<std ::string>.

Gavin Deane

Nov 20 '06 #2

John Goche wrote:
Hello,

Consider the following example. There is a function

foo(Foo1<Foo2fo o1) { ... }
void foo(Foo1< Foo2 >& r_foo1) { }
>
The class Foo1 has an empty constructor.
You mean a default ctor.
That doesn't matter, Foo1 takes a template parameter and nobody knows
if any default(s) is/are providied in its template list.
>
Foo2 can be constructed from an instance foo3 of Foo3.

Can I call:

foo(foo3);
only if the following is valid:

Foo1<Foo2foo1fo o2;
Foo3 instance( foo1foo2 );

Which according to the above statement about Foo3, is rather unlikely.

Try:

Foo1< Foo3 foo1foo3;
foo( foo1foo3 );

Nov 20 '06 #3
I had a similar problem.

There I had my List<template>, and in case of template class were 'Car'
and could not pass a List<Ferrarito my function, just like you're
trying to. I had to make a new function, called "Recast".

In this case, I used an rtti function to dynamically cast it, (checking
if it's safe to cast from Ferrari to Cars, throwing an exception if
they can't be casted). You can cut it off, but bad things can happen if
you cast from, like saying, Cars to Ferraris.

/*!
* This is used to recast the whole list because elements can inherit
each other. Win32 only.
*/
template<class NewElementType>
List<NewElement Type>&
Recast() {
// we should be aware if both ElementType and NewElementType are
compatible
ElementType tempT;
NewElementType& tempNT = dynamic_cast<Ne wElementType&>( tempT); //
force runtime to throw exception if we're casting to wrong datatype

List<NewElement Type>* recast = (List<NewElemen tType>*) this;
return *recast;
}
John Goche wrote:
Hello,

Consider the following example. There is a function

foo(Foo1<Foo2fo o1) { ... }

The class Foo1 has an empty constructor.

Foo2 can be constructed from an instance foo3 of Foo3.

Can I call:

foo(foo3);

?

Thanks,

JG
Nov 20 '06 #4

gu************@ gmail.com wrote:
I had a similar problem.

There I had my List<template>, and in case of template class were 'Car'
and could not pass a List<Ferrarito my function, just like you're
trying to. I had to make a new function, called "Recast".

In this case, I used an rtti function to dynamically cast it, (checking
if it's safe to cast from Ferrari to Cars, throwing an exception if
they can't be casted). You can cut it off, but bad things can happen if
you cast from, like saying, Cars to Ferraris.

/*!
* This is used to recast the whole list because elements can inherit
each other. Win32 only.
*/
template<class NewElementType>
List<NewElement Type>&
Recast() {
// we should be aware if both ElementType and NewElementType are
compatible
ElementType tempT;
NewElementType& tempNT = dynamic_cast<Ne wElementType&>( tempT); //
force runtime to throw exception if we're casting to wrong datatype

List<NewElement Type>* recast = (List<NewElemen tType>*) this;
return *recast;
}

The above invokes undefined behaviour. I can't express to you in words
how dangerous the above code is.
You might think it works in Win32 but in fact it doesn't. Of course, MS
won't tell you that.
Basicly: a recast is dangerous even in the best of conditions - better
a "conversion ctor" which creates a new fully-formed derived object.
And in the event that you are converting a Ferrarri to a car thats done
automatically if the former is derived from the latter( plain copy ctor
invoked). The resulting Cars are spliced Ferraris, of course. Lets
ignore the use of ptrs and polymorphism for now.

The solution is so simple and doesn't need a cast of any kind: a
conversion ctor.

#include <iostream>
#include <list>
#include <algorithm>

struct Car
{
Car() { }
Car(const Car& copy) { }
virtual ~Car() { }
};

struct Ferrarri : public Car
{
Ferrarri() { }
// conversion ctor: (thats all you need)
Ferrarri(const Car& cvt) : Car(cvt) { }
Ferrarri(const Ferrarri& copy) { }
};

int main()
{
std::list< Car cars(10);
std::list< Ferrarri racingcars(10);
// the following splices Ferraris into Cars
std::copy(racin gcars.begin(), racingcars.end( ), cars.begin());
// the following constructs (not cast) brand new Ferrarris
std::copy(cars. begin(), cars.end(), racingcars.begi n());
}

Nov 20 '06 #5
Mr. Salt,

The solution is quite simple to Cars/Ferrarri scenario, but the problem
initially pointed still remains.
How to solve it? The following code is invalid:

void something( std::list<Car>& list_of_cars) {
}
std::list<Ferra rriracingcars(1 0);
something( racingcars);

That's the error. The dynamic cast will force the runtime to check
inheritance between Ferrari and Cars.

Regards,
Gustavo

Salt_Peter wrote:
gu************@ gmail.com wrote:
I had a similar problem.

There I had my List<template>, and in case of template class were 'Car'
and could not pass a List<Ferrarito my function, just like you're
trying to. I had to make a new function, called "Recast".

In this case, I used an rtti function to dynamically cast it, (checking
if it's safe to cast from Ferrari to Cars, throwing an exception if
they can't be casted). You can cut it off, but bad things can happen if
you cast from, like saying, Cars to Ferraris.

/*!
* This is used to recast the whole list because elements can inherit
each other. Win32 only.
*/
template<class NewElementType>
List<NewElement Type>&
Recast() {
// we should be aware if both ElementType and NewElementType are
compatible
ElementType tempT;
NewElementType& tempNT = dynamic_cast<Ne wElementType&>( tempT); //
force runtime to throw exception if we're casting to wrong datatype

List<NewElement Type>* recast = (List<NewElemen tType>*) this;
return *recast;
}

The above invokes undefined behaviour. I can't express to you in words
how dangerous the above code is.
You might think it works in Win32 but in fact it doesn't. Of course, MS
won't tell you that.
Basicly: a recast is dangerous even in the best of conditions - better
a "conversion ctor" which creates a new fully-formed derived object.
And in the event that you are converting a Ferrarri to a car thats done
automatically if the former is derived from the latter( plain copy ctor
invoked). The resulting Cars are spliced Ferraris, of course. Lets
ignore the use of ptrs and polymorphism for now.

The solution is so simple and doesn't need a cast of any kind: a
conversion ctor.

#include <iostream>
#include <list>
#include <algorithm>

struct Car
{
Car() { }
Car(const Car& copy) { }
virtual ~Car() { }
};

struct Ferrarri : public Car
{
Ferrarri() { }
// conversion ctor: (thats all you need)
Ferrarri(const Car& cvt) : Car(cvt) { }
Ferrarri(const Ferrarri& copy) { }
};

int main()
{
std::list< Car cars(10);
std::list< Ferrarri racingcars(10);
// the following splices Ferraris into Cars
std::copy(racin gcars.begin(), racingcars.end( ), cars.begin());
// the following constructs (not cast) brand new Ferrarris
std::copy(cars. begin(), cars.end(), racingcars.begi n());
}
Nov 20 '06 #6
[ Please don't top post ] - rearranged below...
Salt_Peter wrote:
gu************@ gmail.com wrote:
I had a similar problem.
>
There I had my List<template>, and in case of template class were 'Car'
and could not pass a List<Ferrarito my function, just like you're
trying to. I had to make a new function, called "Recast".
>
In this case, I used an rtti function to dynamically cast it, (checking
if it's safe to cast from Ferrari to Cars, throwing an exception if
they can't be casted). You can cut it off, but bad things can happen if
you cast from, like saying, Cars to Ferraris.
>
/*!
* This is used to recast the whole list because elements can inherit
each other. Win32 only.
*/
template<class NewElementType>
List<NewElement Type>&
Recast() {
// we should be aware if both ElementType and NewElementType are
compatible
ElementType tempT;
NewElementType& tempNT = dynamic_cast<Ne wElementType&>( tempT); //
force runtime to throw exception if we're casting to wrong datatype
>
List<NewElement Type>* recast = (List<NewElemen tType>*) this;
return *recast;
}
>
>
The above invokes undefined behaviour. I can't express to you in words
how dangerous the above code is.
You might think it works in Win32 but in fact it doesn't. Of course, MS
won't tell you that.
Basicly: a recast is dangerous even in the best of conditions - better
a "conversion ctor" which creates a new fully-formed derived object.
And in the event that you are converting a Ferrarri to a car thats done
automatically if the former is derived from the latter( plain copy ctor
invoked). The resulting Cars are spliced Ferraris, of course. Lets
ignore the use of ptrs and polymorphism for now.

The solution is so simple and doesn't need a cast of any kind: a
conversion ctor.

#include <iostream>
#include <list>
#include <algorithm>

struct Car
{
Car() { }
Car(const Car& copy) { }
virtual ~Car() { }
};

struct Ferrarri : public Car
{
Ferrarri() { }
// conversion ctor: (thats all you need)
Ferrarri(const Car& cvt) : Car(cvt) { }
Ferrarri(const Ferrarri& copy) { }
};

int main()
{
std::list< Car cars(10);
std::list< Ferrarri racingcars(10);
// the following splices Ferraris into Cars
std::copy(racin gcars.begin(), racingcars.end( ), cars.begin());
// the following constructs (not cast) brand new Ferrarris
std::copy(cars. begin(), cars.end(), racingcars.begi n());
}
gu************@ gmail.com wrote:
Mr. Salt,

The solution is quite simple to Cars/Ferrarri scenario, but the problem
initially pointed still remains.
How to solve it? The following code is invalid:

void something( std::list<Car>& list_of_cars) {
}
std::list<Ferra rriracingcars(1 0);
something( racingcars);

That's the error. The dynamic cast will force the runtime to check
inheritance between Ferrari and Cars.

Regards,
Gustavo
That static type check happens without any casting involved. A
container of Ferrarris *is* already a container of Cars.
Now to have something(std:: list<>&) work with any Car (Lamborghini,
Carrerra, Aston Martin) - template it:

#include <iostream>
#include <list>

class Car
{
std::string s;
public:
Car(std::string s_ = "Car") : s(s_) { }
const std::string& getstr() const { return s; }
};

class Ferrarri : public Car
{
public:
Ferrarri(const Car& cvt) : Car("Ferrarri") { }
Ferrarri(std::s tring s_ = "Ferrarri") : Car(s_) { }
};
// something(...) template
template< typename T >
void something( std::list< T >& list_of_cars )
{
typedef typename std::list< T >::iterator TIter;
for( TIter iter = list_of_cars.be gin();
iter != list_of_cars.en d();
++iter )
{
std::cout << (*iter).getstr( );
std::cout << std::endl;
}
}

int main()
{
std::list<Ferra rriracingcars(5 );
something( racingcars );
}

/*
Ferrarri
Ferrarri
Ferrarri
Ferrarri
Ferrarri
*/

Consider the implications. That template will work with *any*
derivative of Car - including a derivative not yet written.

Nov 20 '06 #7

Salt_Peter wrote:
That static type check happens without any casting involved. A
container of Ferrarris *is* already a container of Cars.
I think you understand this point because your code did not appear to
take an approach that suggested any misunderstandin g, but just in case
of any confusion...

A container of Ferraris *is not* a container of Cars in the
polymorphism sense of "is a". You can not put an Lamborghini in a
container of Ferraris. You can put a Lamborghini in a container of Cars
and that container of Cars might happen to only contain Ferraris before
you put the Lamborghini in. But a container of Cars that happens to
only contain Ferraris is not a container of Ferraris, it is a container
of Cars.

http://www.parashift.com/c++-faq-lit....html#faq-21.3

In fact I don't think this is directly relevant to the questioner, as
the code under discussion uses containers of objects, not containers of
pointers or references, so is presumably not trying to store Cars to be
used polymorphically . However, the phrase "is a" is often strongly
associated with inheritance and polymorphism and I wanted to avoid any
misinterpretati on of your statement that a container of Ferraris is a
container of Cars.

Gavin Deane

Nov 21 '06 #8
I'll stop arguing to you because you've been so stubborn to your point
of view.
Your code will allow you to deal with a list of Bananas and not only
Cars.

And semantically speaking, a containter of cars must accept a container
of Ferraris, Porsches, Mercedes, and so on... (but not Apples or
Bananas).

Salt_Peter wrote:
[ Please don't top post ] - rearranged below...
Salt_Peter wrote:
gu************@ gmail.com wrote:
I had a similar problem.

There I had my List<template>, and in case of template class were 'Car'
and could not pass a List<Ferrarito my function, just like you're
trying to. I had to make a new function, called "Recast".

In this case, I used an rtti function to dynamically cast it, (checking
if it's safe to cast from Ferrari to Cars, throwing an exception if
they can't be casted). You can cut it off, but bad things can happen if
you cast from, like saying, Cars to Ferraris.

/*!
* This is used to recast the whole list because elements can inherit
each other. Win32 only.
*/
template<class NewElementType>
List<NewElement Type>&
Recast() {
// we should be aware if both ElementType and NewElementType are
compatible
ElementType tempT;
NewElementType& tempNT = dynamic_cast<Ne wElementType&>( tempT); //
force runtime to throw exception if we're casting to wrong datatype

List<NewElement Type>* recast = (List<NewElemen tType>*) this;
return *recast;
}


>
The above invokes undefined behaviour. I can't express to you in words
how dangerous the above code is.
You might think it works in Win32 but in fact it doesn't. Of course, MS
won't tell you that.
Basicly: a recast is dangerous even in the best of conditions - better
a "conversion ctor" which creates a new fully-formed derived object.
And in the event that you are converting a Ferrarri to a car thats done
automatically if the former is derived from the latter( plain copy ctor
invoked). The resulting Cars are spliced Ferraris, of course. Lets
ignore the use of ptrs and polymorphism for now.
>
The solution is so simple and doesn't need a cast of any kind: a
conversion ctor.
>
#include <iostream>
#include <list>
#include <algorithm>
>
struct Car
{
Car() { }
Car(const Car& copy) { }
virtual ~Car() { }
};
>
struct Ferrarri : public Car
{
Ferrarri() { }
// conversion ctor: (thats all you need)
Ferrarri(const Car& cvt) : Car(cvt) { }
Ferrarri(const Ferrarri& copy) { }
};
>
int main()
{
std::list< Car cars(10);
std::list< Ferrarri racingcars(10);
// the following splices Ferraris into Cars
std::copy(racin gcars.begin(), racingcars.end( ), cars.begin());
// the following constructs (not cast) brand new Ferrarris
std::copy(cars. begin(), cars.end(), racingcars.begi n());
}

gu************@ gmail.com wrote:
Mr. Salt,

The solution is quite simple to Cars/Ferrarri scenario, but the problem
initially pointed still remains.
How to solve it? The following code is invalid:

void something( std::list<Car>& list_of_cars) {
}
std::list<Ferra rriracingcars(1 0);
something( racingcars);

That's the error. The dynamic cast will force the runtime to check
inheritance between Ferrari and Cars.

Regards,
Gustavo

That static type check happens without any casting involved. A
container of Ferrarris *is* already a container of Cars.
Now to have something(std:: list<>&) work with any Car (Lamborghini,
Carrerra, Aston Martin) - template it:

#include <iostream>
#include <list>

class Car
{
std::string s;
public:
Car(std::string s_ = "Car") : s(s_) { }
const std::string& getstr() const { return s; }
};

class Ferrarri : public Car
{
public:
Ferrarri(const Car& cvt) : Car("Ferrarri") { }
Ferrarri(std::s tring s_ = "Ferrarri") : Car(s_) { }
};
// something(...) template
template< typename T >
void something( std::list< T >& list_of_cars )
{
typedef typename std::list< T >::iterator TIter;
for( TIter iter = list_of_cars.be gin();
iter != list_of_cars.en d();
++iter )
{
std::cout << (*iter).getstr( );
std::cout << std::endl;
}
}

int main()
{
std::list<Ferra rriracingcars(5 );
something( racingcars );
}

/*
Ferrarri
Ferrarri
Ferrarri
Ferrarri
Ferrarri
*/

Consider the implications. That template will work with *any*
derivative of Car - including a derivative not yet written.
Nov 21 '06 #9

gu************@ gmail.com wrote:
I'll stop arguing to you because you've been so stubborn to your point
of view.
Your code will allow you to deal with a list of Bananas and not only
Cars.

And semantically speaking, a containter of cars must accept a container
of Ferraris, Porsches, Mercedes, and so on... (but not Apples or
Bananas).
Please don't top post.
Nobody is arguing. And my approach is no better than any other.
However, take note that a container of Cars can store only a mixture of
Car derivatives. It can't hold bananas or trees. Thats not its job, its
not a container of Java objects.
Again, the goal here is to support any car, including a container of
different cars.
>

Salt_Peter wrote:
[ Please don't top post ] - rearranged below...
Salt_Peter wrote:
gu************@ gmail.com wrote:
I had a similar problem.
>
There I had my List<template>, and in case of template class were 'Car'
and could not pass a List<Ferrarito my function, just like you're
trying to. I had to make a new function, called "Recast".
>
In this case, I used an rtti function to dynamically cast it, (checking
if it's safe to cast from Ferrari to Cars, throwing an exception if
they can't be casted). You can cut it off, but bad things can happen if
you cast from, like saying, Cars to Ferraris.
>
/*!
* This is used to recast the whole list because elements can inherit
each other. Win32 only.
*/
template<class NewElementType>
List<NewElement Type>&
Recast() {
// we should be aware if both ElementType and NewElementType are
compatible
ElementType tempT;
NewElementType& tempNT = dynamic_cast<Ne wElementType&>( tempT); //
force runtime to throw exception if we're casting to wrong datatype
>
List<NewElement Type>* recast = (List<NewElemen tType>*) this;
return *recast;
}
>
>

The above invokes undefined behaviour. I can't express to you in words
how dangerous the above code is.
You might think it works in Win32 but in fact it doesn't. Of course, MS
won't tell you that.
Basicly: a recast is dangerous even in the best of conditions - better
a "conversion ctor" which creates a new fully-formed derived object.
And in the event that you are converting a Ferrarri to a car thats done
automatically if the former is derived from the latter( plain copy ctor
invoked). The resulting Cars are spliced Ferraris, of course. Lets
ignore the use of ptrs and polymorphism for now.

The solution is so simple and doesn't need a cast of any kind: a
conversion ctor.

#include <iostream>
#include <list>
#include <algorithm>

struct Car
{
Car() { }
Car(const Car& copy) { }
virtual ~Car() { }
};

struct Ferrarri : public Car
{
Ferrarri() { }
// conversion ctor: (thats all you need)
Ferrarri(const Car& cvt) : Car(cvt) { }
Ferrarri(const Ferrarri& copy) { }
};

int main()
{
std::list< Car cars(10);
std::list< Ferrarri racingcars(10);
// the following splices Ferraris into Cars
std::copy(racin gcars.begin(), racingcars.end( ), cars.begin());
// the following constructs (not cast) brand new Ferrarris
std::copy(cars. begin(), cars.end(), racingcars.begi n());
}
gu************@ gmail.com wrote:
Mr. Salt,
>
The solution is quite simple to Cars/Ferrarri scenario, but the problem
initially pointed still remains.
How to solve it? The following code is invalid:
>
void something( std::list<Car>& list_of_cars) {
}
std::list<Ferra rriracingcars(1 0);
something( racingcars);
>
That's the error. The dynamic cast will force the runtime to check
inheritance between Ferrari and Cars.
>
Regards,
Gustavo
>
That static type check happens without any casting involved. A
container of Ferrarris *is* already a container of Cars.
Now to have something(std:: list<>&) work with any Car (Lamborghini,
Carrerra, Aston Martin) - template it:

#include <iostream>
#include <list>

class Car
{
std::string s;
public:
Car(std::string s_ = "Car") : s(s_) { }
const std::string& getstr() const { return s; }
};

class Ferrarri : public Car
{
public:
Ferrarri(const Car& cvt) : Car("Ferrarri") { }
Ferrarri(std::s tring s_ = "Ferrarri") : Car(s_) { }
};
// something(...) template
template< typename T >
void something( std::list< T >& list_of_cars )
{
typedef typename std::list< T >::iterator TIter;
for( TIter iter = list_of_cars.be gin();
iter != list_of_cars.en d();
++iter )
{
std::cout << (*iter).getstr( );
std::cout << std::endl;
}
}

int main()
{
std::list<Ferra rriracingcars(5 );
something( racingcars );
}

/*
Ferrarri
Ferrarri
Ferrarri
Ferrarri
Ferrarri
*/

Consider the implications. That template will work with *any*
derivative of Car - including a derivative not yet written.
Nov 21 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
1680
by: Jerivix Entadi | last post by:
I'm attempting to create an application to work with a fluid database of people. I'm doing this in a command line, text-based manner. I need to know two things: 1) How do I save data, perhaps a group of objects and their memebers or a few lines of text? and 2) Is there any way to automate object construction? I'm thinking that I can create a vector or something similar to handle the number of people, is there a way for me to write a...
2
1696
by: Steve | last post by:
Hi Folks, Sorry for this stupid question, but how do you handle errors during class construction. In other words, if I have a class that loads a file, and during loading, an error occurs, how do you deal with this in respect of releasing the resources that would have been allocated if the load was successful? What I am trying to achieve is, if I call my class with new, how do I return NULL if the construction fails (so I can check for...
14
1991
by: trying_to_learn | last post by:
i am on the chapter on copy construction in C++ in the code (see below), the author says if u pass the object by value as in HowMany h2 = f(h); ....then a bitwise object is created w/o calling the constructor of the class. However he says when we leave scope of function HowMany f(HowMany x) then the destructor is called. why this inconsistency?. Accdng to me even the destructor should *not* be called. i can understand that bit wise copy...
7
1480
by: Dave | last post by:
Hello all, In the code below, I use a pointer to an object under construction. Is the usage below legal? I have come across similar code at work. It compiles, but I'm not sure it's really legal... Thanks, Dave struct D;
3
1840
by: christopher.davidson | last post by:
Hello, I am working with XML files and utilizing Array functions to take the XML data and combined it with some html code to display a particular page. The process currently works like so: 1.) Request an Async request of the XML 2.) Once complete, parse the appropriate XML data to parse
0
9647
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9496
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
1
10110
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8989
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
6745
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5397
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
4066
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3669
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2894
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.