Question

creating a class from results

Asked by: kuntilanak

Lets say I have the following main method that I want to run and when I run it, it produces the following out out:

testing
hope this works
testing
hope this works
oops
transaction
printing 2
printing 0
printing 0
printing 2
printing 0
routing route
changing route
routing route
changing route
routing route

What would the class A and B look like? Can you give me some hints?
changing route

void printit( A& a )
 {
 a.print( );
 }
 
 int main( void )
 {
 B b1, b2(2);
 b1 = b2;
 A a; a = b1;
 b1.print( ); a.print( );
 printit( b1 ); printit( b2 ); printit( a );
 return 0;
 }

                                  
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-10-24 at 22:53:51ID24841403
Topics

C++ Programming Language

,

Programming Languages

,

C Programming Language

Participating Experts
3
Points
500
Comments
67

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Transparent Hint
    Hi, I try to make a new component (transparent hint). But when I use it... I have always an error. I change the HintWindowClass and assign my new class (TNewHintWindow). But I try to debug it and I set a breakpoint in my constructor. The problem is that my program never go in...
  2. OOP
    Maybe i'm not getting the concept of OOP, but I was assigned a project. Create a class called date that contains three members: the month (int), the day of the month (int) and the year (int). Have the user enter two dates and store tehse dates in two sperate objects. Limit i...
  3. Delphi OOP question
    Hi :) Here is a question regarding OOP with Delphi. What I know of OOP is that variable must be privatly encapsulated and accessed strictly using properties and methods. I think Demeter's Law is quite clear about that. With that in mind here is my question: When I place ...
  4. Help with revision - OOP
    Hello, I'm trying to do some revision and would like some assistance. The area that I have been studying is based around Java and the principles of OOP. I need to be sure that given a program that has been written in Java I can identify and point to examples of the 4 primar...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: Infinity08Posted on 2009-10-25 at 01:01:49ID: 25655907

Take a look at the code, and figure out which functionalities you need for each of the classes. Then implement those functionalities.

For example, this line :

>> a.print( );

indicates that the A class needs a print method that takes no parameters. You'll have to implement that.

Just do the same for the rest of the code, until it runs :)

 

by: Infinity08Posted on 2009-10-25 at 01:03:01ID: 25655914

A few things you'll have to watch out for, are inheritance, constructors, destructors, assignment operators, etc.

 

by: Subrat2009Posted on 2009-10-25 at 05:40:09ID: 25656439

1. Derive class B from class A.

2. Use overloaded assignment operator in both the classes.

3. In class A, assignment optr use class B type object as argument.

4. Use copy constuctor in class A.

5. Need to use zero argment constructor and one argument constructor in class B, zero arg constructor in class A .

 

by: Infinity08Posted on 2009-10-25 at 06:01:43ID: 25656502

Subrat2009, part of the idea of an assignment like this is to figure these things out for yourself. The challenge is not to implement it, but to figure out what needs to be implemented - you've just taken away that challenge.

kuntilanak, please try to figure this out for yourself - it's so much more rewarding, and you'll learn so much more from it.

 

by: kuntilanakPosted on 2009-10-25 at 07:28:57ID: 25656724

so can I do this only by only having the print method as the only method that uses '\n'

 

by: Infinity08Posted on 2009-10-25 at 07:44:28ID: 25656761

What do you mean by that ?

 

by: kuntilanakPosted on 2009-10-25 at 09:21:08ID: 25657076

well the constraints in making the class A and B is that I must only use one '\n' in the implementation... I am guessing that's inside the print function, correct?

 

by: Infinity08Posted on 2009-10-25 at 09:32:32ID: 25657134

Ok, if that's a constraint, then putting it in the print function would be a good approach.

 

by: kuntilanakPosted on 2009-10-25 at 09:48:39ID: 25657211

I haven't use overloading assignment constructor, can you show me an example on how to do this?

 

by: Infinity08Posted on 2009-10-25 at 10:38:24ID: 25657393

Sure :

Foo& Foo::operator=(const Foo& foo) {
    if (this != &foo) {
        // copy the data, like :
        this->dataMember = foo.dataMember;
    }
    return *this;
}

                                              
1:
2:
3:
4:
5:
6:
7:

Select allOpen in new window

 

by: trinitrotoluenePosted on 2009-10-25 at 15:31:33ID: 25658775

kuntilanak: try what happens when you use the default copy constructor and assignement operators.

 

by: kuntilanakPosted on 2009-10-25 at 22:12:23ID: 25659752

are you saying we need an overloaded assignment because in the code we are assigning a to b? that should be handled by inheritance right

 

by: Infinity08Posted on 2009-10-25 at 23:21:24ID: 25659960

You seem to be mixing up pointers with object instances ... And even then, inheritance doesn't just allow you to cast one pointer to another as you desire. There are certain rules and limitations.

 

by: kuntilanakPosted on 2009-10-25 at 23:47:06ID: 25660030

inheritance topic:

if B inherits A and then A has a function print, then does it mean that B must implement print?

 

by: Infinity08Posted on 2009-10-26 at 01:31:22ID: 25660452

>> if B inherits A

I guess you mean "if B inherits FROM A".


>> and then A has a function print, then does it mean that B must implement print?

No. B also inherits the member functions from A. You can always re-implement it to give it different behavior though.

On the topic of inheritance, please have a look at this basic tutorial :

        http://www.cplusplus.com/doc/tutorial/inheritance/

 

by: kuntilanakPosted on 2009-10-26 at 07:29:24ID: 25662567

in the polygon example the Polygon it self doesn't have an area method.. but it's inherited class has it.. is it right?

 

by: Subrat2009Posted on 2009-10-26 at 08:01:56ID: 25662922

Yes...

Cases in Inheritance :

1. Override existing things.

2. Add New things to derived class.

3. Use Existing features.

4.  Combination of _all_.

 

by: Infinity08Posted on 2009-10-26 at 08:18:28ID: 25663106

>> in the polygon example the Polygon it self doesn't have an area method.. but it's inherited class has it.. is it right?

Correct.
And both the Polygon class and its derived classes have the set_values method as implemented in the Polygon class (since none of the derived classes re-implemented it).

 

by: kuntilanakPosted on 2009-10-26 at 08:47:31ID: 25663451

If I can break down the printing, the:

testing
hope this works
testing
hope this works

is printed at the constructor... but how can I print this out if I can only use the method print to print stuffs out.. is it saying that I should call the print method inside the constructor it self? as the print method is the only one that has a '\n'

remember: I can only use one '\n' in my code

 

by: Infinity08Posted on 2009-10-26 at 09:10:43ID: 25663766

>> is it saying that I should call the print method inside the constructor it self?

That's possible, isn't it ? :)

 

by: kuntilanakPosted on 2009-10-26 at 09:20:24ID: 25663864

the reason why I am confused is because the print method doesn't take any arguments.. so how does it know to print :

testing
hope this works

 

by: Infinity08Posted on 2009-10-26 at 09:25:28ID: 25663910

>> the reason why I am confused is because the print method doesn't take any arguments..

Maybe you should let it take some arguments ?
Note that you can use default arguments to make sure that it's also possible to call the function without arguments.

Or, maybe you should have another function that does the actual write operation (with the newline character), and that is called by all others.

Or, maybe you can find another solution ;)

It's a free world, and there are plenty of options hehe

 

by: kuntilanakPosted on 2009-10-26 at 09:37:55ID: 25664070

>>Note that you can use default arguments to make sure that it's also possible to call the function without >>arguments.

an example would help here

 

by: Infinity08Posted on 2009-10-26 at 09:42:51ID: 25664113

An example of default arguments is below. But maybe the second option I mentioned is more appropriate. It's certainly nicer :)

void fun(int arg = 5) {
  std::cout << arg << std::endl;
}
 
fun(10);   // will print 10
fun();     // will print 5

                                              
1:
2:
3:
4:
5:
6:

Select allOpen in new window

 

by: kuntilanakPosted on 2009-10-26 at 09:49:38ID: 25664181

oh so you mean have another function that basically just do a print new line :)

 

by: kuntilanakPosted on 2009-10-26 at 09:57:13ID: 25664271

this last line:

routing route
changing route
routing route
changing route
routing route

comes from the printit methods right?

I imagine this one:

printing 2
printing 0
printing 0
printing 2
printing 0

is from the two print, but how is that possible...

 

by: Infinity08Posted on 2009-10-26 at 11:03:18ID: 25664933

>> oh so you mean have another function that basically just do a print new line :)

That, or a full fledged writeLine function, that writes whatever you pass to it.


>> is from the two print, but how is that possible...

The printit functions call print internally, don't they ?

 

by: kuntilanakPosted on 2009-10-26 at 12:59:59ID: 25666131

>>The printit functions call print internally, don't they ?

yes they do, I just want to know if this line of code comes from two print statements, why is it printing 5 lines of stuff

printing 2
printing 0
printing 0
printing 2
printing 0

 

by: Infinity08Posted on 2009-10-26 at 13:02:48ID: 25666161

What do you think ?

>> The printit functions call print internally, don't they ?

 

by: kuntilanakPosted on 2009-10-26 at 13:20:48ID: 25666346

the printit itself prints 2 lines of code each time it is executed, and then so the print should do the same... however it only prints an odd number of lines instead of even (5 instead of 6) this is what confuses me

 

by: Infinity08Posted on 2009-10-26 at 13:22:48ID: 25666374

>> the printit itself prints 2 lines of code each time it is executed,

two lines ? How do you figure that ?


How many times is the print function called ?

 

by: kuntilanakPosted on 2009-10-26 at 13:39:36ID: 25666603

it's called 5 times...

 

by: kuntilanakPosted on 2009-10-26 at 13:40:10ID: 25666612

so this might be a call at the destructor:

routing route
changing route
routing route
changing route
routing route

 

by: Infinity08Posted on 2009-10-26 at 13:51:02ID: 25666745

>> so this might be a call at the destructor:

Getting warmer ;)

 

by: kuntilanakPosted on 2009-10-26 at 13:56:51ID: 25666819

hmmm...I have no clue where else it's called if it's not the destructor...

 

by: Infinity08Posted on 2009-10-26 at 14:01:44ID: 25666871

Don't get me wrong ... It IS the destructors. The "getting warmer" part simply implies that you have to go a bit further to figure it out completely ;)

 

by: kuntilanakPosted on 2009-10-26 at 16:20:46ID: 25667995

I still don't get why B should inherit from A, my only guess is because of the assignment a = b1 and I still haven't figure out..

After thinking of it as well, I think the only place where the '\n' should be placed is at the print method... I still don't get it on how using the print to print something else... all I know is that the print should just do:

"printing x \n"

so how can I use a method that already have that inside the implementation to print something as:

testing
hope this works

 

by: trinitrotoluenePosted on 2009-10-26 at 16:33:51ID: 25668080

You generally do not design classes by looking at the code.

You need to get your requirements straight and then design your classes. Printing a new line can be done in any class depending on your requirements. B should inherit from A only if it can be considered as a specialized substitute for A and can be used in all places where an A can be used.

 

by: kuntilanakPosted on 2009-10-26 at 17:42:46ID: 25668397

>>You generally do not design classes by looking at the code.

I generally don't do that, this is the only time where I do it as it's the assignment and I dont' have more choice..

and maybe you're not reading the topic from the start, but I can only use one '/n' in all of my implementation.. don't ask me why

 

by: Infinity08Posted on 2009-10-26 at 23:59:32ID: 25669635

>> so how can I use a method that already have that inside the implementation to print something as:

We already went over that earlier, didn't we ? (http:#25664933)


>> I still don't get why B should inherit from A, my only guess is because of the assignment a = b1 and I still haven't figure out..

I'd say, just try it out the way you think it should be, and see if you can get the same output.

 

by: kuntilanakPosted on 2009-10-27 at 07:15:55ID: 25672643

One question and maybe the last before I close this topic down:

The last few parts of the line is:

routing route
changing route
routing route
changing route
routing route

we know this is from the destructor, how am I suppose to know on which destructor is called first? Is the:

changing route

from B

and routing route from

A

Bottom point is that if B inherits from A, then is B's destructor called then A's destructor is called....

 

by: Infinity08Posted on 2009-10-27 at 08:09:00ID: 25673240

Destructors for local objects are called in reverse order of creation of those objects. ie. if foo was created before bar, then bar will be destroyed before foo :

        {
            Foo foo;
            Bar bar;

            // ...
        }

Furthermore, a derived class's destructor automatically calls the base class's destructor.

 

by: kuntilanakPosted on 2009-10-27 at 08:51:27ID: 25673818

>>a derived class's destructor automatically calls the base class's destructor.

so if B inhertis from A then:

1. A's destructor is called
2. B's destructor is called then A's is called

which one is true?

 

by: kuntilanakPosted on 2009-10-27 at 08:53:14ID: 25673848

oh and with the printing methods, I can't create another method just to print the new line, all I can have in class A and B are only the Big4 and a print method, nothing else.... so how can I make the print method to print several strings with a new line... the print method does't take any arguments as you can see from above.... any idea or hints?

 

by: Infinity08Posted on 2009-10-27 at 09:44:42ID: 25674578

>> so if B inhertis from A then:

B's destructor calls A's destructor, so first B's destructor, then A's destructor.

Remember : always reverse order.

 

by: kuntilanakPosted on 2009-10-27 at 09:55:33ID: 25674697

so it calls from what it inherits from first the it's own constructor... I see... Now I just need to figure out how to use the print(), or otherwise I can't do anything as I need to print something to try it out... and I can only use this print()

 

by: Infinity08Posted on 2009-10-27 at 11:08:51ID: 25675544

>> so it calls from what it inherits from first the it's own constructor...

We were talking about the destructors, weren't we ?


>> Now I just need to figure out how to use the print(), or otherwise I can't do anything as I need to print something to try it out... and I can only use this print()

Well, several options were mentioned. I'm sure one of them works ;)

 

by: kuntilanakPosted on 2009-10-27 at 11:13:11ID: 25675596

one of your solution is for the print to take an arguments, which doesn't work as the method signature is print() and the other one was to create another function, which we can't...

 

by: Infinity08Posted on 2009-10-27 at 12:32:40ID: 25676446

>> one of your solution is for the print to take an arguments, which doesn't work as the method signature is print()

Did you remember the comment about default arguments ?

 

by: Infinity08Posted on 2009-10-27 at 12:33:23ID: 25676458

>> are only the Big4 and a print method,

Btw, what are the Big4 ?

 

by: kuntilanakPosted on 2009-10-27 at 13:25:20ID: 25677031

Okay, nevermind with the printing, I got it all sorted out...seems that I am misunderstanding the question that I can use only one '\n' in each method

 

by: Infinity08Posted on 2009-10-27 at 13:26:47ID: 25677045

Heh ... it sounded like a weird requirement :)

 

by: kuntilanakPosted on 2009-10-27 at 14:15:11ID: 25677606

in the printit method the argument that it takes is an A& however we can see that B can also be passed into the  the arguments. Which print is called if we pass a B object to the print it? Is it B's print or A's print?

 

by: Infinity08Posted on 2009-10-27 at 14:20:25ID: 25677682

Depends if it's a virtual method or not.

But the more important question you should be asking is : which one do you want it to call ?

Btw, I hope you're also trying this out with your compiler to get a better idea of how things work, and how close/far you are from the required result ? Solving it in your head is fine if you can, but at some point, doing it in practice (ie. trying stuff out) is a lot more effective.

 

by: kuntilanakPosted on 2009-10-27 at 14:33:37ID: 25677816

My understanding of virtual class, if print is declared as non-virtual then A's print will always be called... is this true?

I will try what I have in my head later on home when I have access to gcc

 

by: Infinity08Posted on 2009-10-27 at 14:58:08ID: 25678060

>> if print is declared as non-virtual then A's print will always be called... is this true?

If you use a reference-to-A or pointer-to-A, yes.

 

by: Infinity08Posted on 2009-10-27 at 14:59:02ID: 25678073

>> I will try what I have in my head later on home when I have access to gcc

It's so much easier to do this kind of assignment when you actually have access to a compiler. What takes you hours now could be finished in minutes.

 

by: kuntilanakPosted on 2009-10-27 at 15:37:11ID: 25678468

I got access to my compiler at least now, and got the following error:

 error: new types may not be defined in a return type
 note: (perhaps a semicolon is missing after the definition of âAâ)
 error: two or more data types in declaration of âAâ
error: return type specification for constructor invalid


and the error is on the code below

A::A(){
 value = 0;
 std::cout << "Just got my paycheck!" << std::endl;
}

                                              
1:
2:
3:
4:

Select allOpen in new window

 

by: kuntilanakPosted on 2009-10-27 at 15:59:14ID: 25678628

okay ignore my previous post,  I got everything just as I want it to be printed, however this is where I got wrong:

printing 0
printing 0
printing 0
printing 0
printing 0

any idea why?

 

by: kuntilanakPosted on 2009-10-27 at 16:16:12ID: 25678717

Here's my full code according to what it should produce and what I get along with my implementation

 

by: kuntilanakPosted on 2009-10-27 at 16:33:17ID: 25678807

I wonder why :

a = b1

needs the

A& A::operator=(const A& a)

reason why I know this is because when I did not declare the constructor above and tried to compile the program with only the constructor::

A& A::operator=(const B& b)

it fails....

so weird...

 

by: kuntilanakPosted on 2009-10-27 at 19:04:58ID: 25679456

After several investigation I found the following:
1. The last 4 prints will print a's print method, so none of the print method needs to be declared as virtual
2. My result does no. 1 correctly, however it got the value wrong... when we do b1 = b2, (b2 has a value of
    2 so b1's value should be assigned to 2 as well)... However when we do printit(b1) why is the value
    of b1 0 instead of 2?

 

by: kuntilanakPosted on 2009-10-27 at 21:41:58ID: 25679995

I guess object slicing is not the problem here right, as the printit function uses a reference as the argument

 

by: Infinity08Posted on 2009-10-28 at 00:06:53ID: 25680552

Ok, I'm back. Could you post your complete code you have now ?

 

by: kuntilanakPosted on 2009-10-28 at 07:26:44ID: 25683559

here it is, haven't improve much from the top... the results that I am supposed to be getting is uploaded on my post above

 

by: Infinity08Posted on 2009-10-29 at 02:30:08ID: 25691800

That's not all of the code ... The class definitions are missing ;)

 

by: kuntilanakPosted on 2009-10-29 at 07:13:17ID: 25693859

At least I found a hack on how to get to this answer, thanks infinity for helping. I'll close the topic now

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...