我已经了解了通常最好不要在头文件中定义任何内容,因为冗余副本是针对包含头文件的每个其他文件进行的.但是,在静态内联方法的情况下,似乎我必须在现场定义它(至少Visual Studio 2010不允许我这样做).因此,如果我在头文件中编写接口,我就无法定义类定义的静态内联方法或.cpp文件.
那么,我是否应该费心去使用静态内联方法呢?还有一个相关的问题:我是否应该在头文件中定义任何方法或变量(常量怎么样)?
无论如何,奇怪的是,这不是我的C++书籍中非常详细的内容.
编辑:我读过有关静态内联方法的类似问题,但似乎没有一个直接解决这个问题.
我前段时间和朋友讨论过.他是一位经验丰富的C++用户,我不是一位经验丰富的C++用户.他告诉我,我应该努力使用堆变量,即:
A* obj = new A("A");
Run Code Online (Sandbox Code Playgroud)
而不是:
A obj("A");
Run Code Online (Sandbox Code Playgroud)
除了使用指针很好和灵活的所有东西之外,他说最好把东西放在堆而不是堆栈中(关于堆栈的东西比堆小?).这是真的吗?如果是这样的话?
编辑:我写了一个错字,说我的朋友建议堆栈变量.他推荐堆变量.
Edit2:我知道有关生命的问题.让我们假设我已经适当地管理了这些变量的生命周期.(即关注的唯一标准是堆与堆栈存储,没有生命周期问题)
我有一个使用内部存储库和中央存储库的项目.有没有办法可以配置settings.xml,以便我可以使用两者而不是一个?当我添加
<mirrors>
<mirror>
<id>MY ID</id>
<url>MY URL</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
Run Code Online (Sandbox Code Playgroud)
在settings.xml中,我可以查看自己的内部存储库,但它会覆盖中央存储库.
我确信这是Maven新手常见的问题.
我有一个循环引用的问题(即啊和Bh #including彼此),有些人建议我使用#pragma一次来防止这种情况.但是,此解决方案似乎仍然无效.
发生的事情是A类不再在Ah以外的任何文件中被识别(甚至不在A.cpp中),B类也是如此.
我来告诉你代码:
啊
#pragma once
#include "B.h"
class A {
public: B* b;
};
Run Code Online (Sandbox Code Playgroud)
BH
#pragma once
#include "A.h"
class B {
public: A* a;
};
Run Code Online (Sandbox Code Playgroud)
A.cpp
#include "stdafx.h"
#include "A.h"
#include "B.h"
Run Code Online (Sandbox Code Playgroud)
B.cpp与A.cpp相同
错误跟踪如下:
1> B.cpp 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C2143:语法错误:缺少';' 在' '1>之前c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int 1> A.cpp 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C2143:语法错误:缺少';' 在' '1> 之前 c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - …
我有一个基于EJB的库,需要修改才能与Tomcat应用服务器兼容(即没有JaveEE).我在Hibernate上浏览了一下,感到非常困惑.
显然,有一个自然的Hibernate分支使用.cfg文件作为基础,符合Java SE,然后有一个基于JPA的Hibernate分支,它有条件地依赖于Java EE.我也觉得讨厌的一件事是显然不支持某些接口 - 例如CriteriaQuery.
所以我想,我必须去自然的Hibernate分支来实现摆脱Java EE的目标(考虑到差异,这很烦人).OTOH,也有TomEE可用,符合Tomcat,并且可能让我保持大部分代码不变
如果我能得到一些反馈,那就太好了.谢谢.