我正在编写一个具有多个相关模块的库。 当我包含来自不同模块的文件时,是否应该使用以下命令来parsing名称空间: using namespace project1::namespace1; class1 obj; 要么 typedef project1::namespace1::class1 class1; class1 obj; 每种方法的优点/缺点是什么? 我读的地方,我们应该在.H文件中使用typedef和using .C文件,这是可取的? 我遇到的“typedef”的一个问题是,如果我在第三个模块中包含原始类和“typedef”类,就会导致命名空间模糊。
请考虑下面的代码: struct A { void f() { } }; struct B1 : A { }; struct B2 : A { }; struct C : B1, B2 { void f() // works { B1::f(); } //using B1::f; // does not work //using B1::A::f; // does not work as well }; int main() { C c; cf(); […]
我有一个C#解决scheme与Visual Studio 2010几个项目。 一个是testing项目(我将称之为“ PrjTest ”),另一个是Windows Forms Application项目(我将称之为“ PrjForm ”)。 PrjForm引用了第三个项目,它能够成功地引用和使用。 PrjForm引用PrjTest ,而PrjForm有一个using语句的类: using PrjTest; 引用已被正确添加 using语句是正确的 拼写是正确的 PrjTest成功build立 PrjForm几乎构build,但在using PrjTest; 与错误一致: 无法findtypes或名称空间名称“PrjTest”(您是否缺lessusing指令或程序集引用?) 我试过以下解决方法: 删除了Resharper(因为Resharper没有任何错误的认识到所引用的项目,我认为这可能值得一试) 删除并重新添加引用和使用语句 重新创buildPrjForm PrjForm目前驻留在PrjTest文件夹内,我试着将它移动到外部文件夹 将该解决scheme加载到另一台计算机上,并附带VS 2010的新副本 我做了功课,花了很长时间在网上寻找答案,没有任何解决scheme帮助。 我还有什么可以尝试的?