English 中文(简体)
How to structure files / dependencies in Visual C++ project
原标题:

This is more of a design question than a C++ question.

I m working on a Texas Hold Em poker game in C++. So far, I have a HandChecker module written that is responsible for determining a player s best hand given his hole cards and the community cards. I decided to move this out into a separate HandChecker project. HandChecker depends on the Hand and Card classes that I have written in the main project though. In its current state, it requires a circular dependency between the main project and the HandChecker project.

What s the best way to structure this project? Should I move the Hand and Card classes into its own separate project?

问题回答

If Hand and HandChecker depend on each other, then moving Hand to a different project won t make any difference. Your options are:

  • Remove the circular dependency. I can t tell you exactly how to do this, but examine the two classes to see where they call each other and ask yourself why they work the way they do. Can you move a bit of functionality from one class to the other to ensure any remaining dependencies are uni-directional? Can you introduce a third class that they both depend upon? Can you introduce an abstract base class for HandChecker so that the compile-time dependency on its concrete implementation is broken?

  • Removing the dependencies is the best approach, but you also may not need to make them into separate projects in the first place. Separate projects are useful for splitting a logical chunk of code (e.g. an XML reader) off from the main project (a poker game) to make a re-usable library (that can also be used in (e.g.) your accounts administration app). HandChecker and Hand sound fundamentally related (neither is of much use without the other), so perhaps they should be in the same project. The only time you might need to make them separate projects is if you want to be able to plug in different HandCheckers to create different card games - in which case you probably need an abstract base class.





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签