我发现在使用eclipse运行或调试我的应用程序几次之后,我在我的控制台中得到了上面的输出(红色),我得不到Dalvik关于我手机连接状态的反馈.我的应用程序仍将调试等.我的控制台中没有任何用处.
任何想法如何解决这一问题?它似乎是间歇性的.几分钟后它就开始做了,继续做了很长一段时间,偶尔会再次消失.这发生在我的最后一台笔记本电脑上,现在在我的新笔记本电脑上进行了全新安装等.
如果我有一个数组,如:
struct S {... };
S m_aArr[256];
Run Code Online (Sandbox Code Playgroud)
我想用它来构造一个矢量,如:
std::vector<S*> m_vecS;
Run Code Online (Sandbox Code Playgroud)
无论如何要做到这一点而不是循环并推回&m_aArr[i]?我知道我不能使用传统的使用std::begin和std::end数组的方法,因为向量是指针之一,原始数组是对象之一,所以我们不能只传入一块内存.
因此,我通过在Android上编写我的第一个游戏,并在观看了关于优化游戏的冗长演示后,我一直在检查我的分配.除了为for(Object o:m_arrayList)约定创建隐式迭代器之外,我设法摆脱了所有游戏内分配,而不是我的ArrayList.
由于我的所有游戏对象,ai实体等都存储在这些迭代/分配中以便于使用,因此这些迭代/分配中有很少一部分.
那么我的选择是什么?
我理论上可以指定合理的上边界并使用数组,但我喜欢ArrayList的特性,例如exists和remove,它们保持代码干净简单.
覆盖ArrayList并提供我自己的iterator()实现,它返回一个类成员,而不是每次使用时都分配一个新的迭代器类型.
我更愿意选择2以方便使用,但是我有点偏执并遇到了问题.有没有人有我在上面选项2中描述的例子?我在从泛型类继承时遇到了问题,显然是冲突类型.
那么第二个问题是还有其他选择来避免这些分配吗?
我想作为一个额外的问题,有没有人知道ArrayList是否预先分配了一定数量的内存插槽(在ctor中指定或作为一些可移动值指定),并且只要你保持在内,就永远不需要做任何其他分配那些界限?即使在明确()之后?
在此先感谢,抱歉有那么多,但我认为这些信息可能对很多人有用.
我在尝试访问派生类的私有构造函数时遇到了一些困难,该派生类被指定为模板参数.我希望指定friend T可以解决问题,但不幸的是它没有效果.
template <typename T>
class Creator
{
public:
static void Create()
{
instance = new T;
}
private:
static T* instance;
friend T;
};
template <typename T>
T* Creator<T>::instance(nullptr);
class Test
{
private:
Test() {}
};
Run Code Online (Sandbox Code Playgroud)
创作尝试:
int main()
{
Creator<Test>::Create();
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
错误C2248'Derived :: Derived':无法访问类'Derived'中声明的私有成员
我有什么想法可以解决这个问题吗?