相关疑难解决方法(0)

内联或不内联

我最近写了几堂课; 我想知道这是不好的做法,对性能有害,打破封装,还是在标题中实际定义一些较小的成员函数是否还有其他任何不妥之处(我确实试过谷歌!).这是一个我有一个标题的例子我写了很多这个:

class Scheduler {
public:
    typedef std::list<BSubsystem*> SubsystemList;

    // Make sure the pointer to entityManager is zero on init
    // so that we can check if one has been attached in Tick()
    Scheduler() : entityManager(0) { }

    // Attaches a manager to the scheduler - used by Tick()
    void AttachEntityManager( EntityManager &em )
        { entityManager = &em; }

    // Detaches the entityManager from a scheduler.
    void DetachEntityManager()
        { entityManager = 0; }

    // Adds a subsystem to …
Run Code Online (Sandbox Code Playgroud)

c++ header function member inlining

10
推荐指数
2
解决办法
1850
查看次数

C++重构 - 将方法移动到实现文件

我有很多带有长方法实现的头文件.

有自动方式吗?

一个接一个可能需要花费很多时间......

谢谢.

c++ refactoring automated-refactoring

6
推荐指数
1
解决办法
1495
查看次数

.cpp与.h中的函数方法定义

为了减少工作中相当大的框架的编译时间,我考虑将.h文件中的类方法定义移动到它们关联的.cpp文件中,如果它们非常大或者需要包括编译可以移动到关联的文件. cpp文件.为清楚起见,下面是一个人为的例子(虽然Foo::inc是一个很小的方法)

main.cpp:

#include "Foo.h"

int main(int argc, char** argv) {
    Foo foo(argc);
    foo.inc();
    return foo.m_argc;
}
Run Code Online (Sandbox Code Playgroud)

之前是Foo.h(还不需要Foo.cpp):

class Foo {
public:
    int m_argc;
    Foo (int argc) : m_argc(argc) {}
    void inc() { m_argc++; }
};
Run Code Online (Sandbox Code Playgroud)

Foo.h之后:

class Foo {
public:
    int m_argc;
    Foo (int argc) : m_argc(argc) {}
    void inc();
};
Run Code Online (Sandbox Code Playgroud)

Foo.cpp:

#include "Foo.h"

void Foo::inc() { m_argc++; }
Run Code Online (Sandbox Code Playgroud)

很久以前,一位同事提到可能存在导致运行时性能下降的情况.我在谷歌上寻找这个案子,但似乎无法找到它,这个问题的接受答案是我能找到的最接近的答案,但它没有给出案例,只是提到它可能发生:从标题中移动内联方法文件到.cpp文件

在旁注中,我对方法明确使用的情况不感兴趣,inline我上面链接的答案就是我能找到的最接近我正在寻找的方法

什么情况(如果有的话)可能导致运行时间减慢?

c++

6
推荐指数
1
解决办法
838
查看次数

有没有自动将头文件转换为cpp和hpp文件的工具?

我有一个(可能是坏的)习惯,在尝试想法时将所有内容都编码到一个整体头文件中,将所有实现代码与类定义一起放置。随着代码的扩展,导航文件变得困难。因此,我将代码重构为单独的文件,并将实现细节(cpp 文件)与接口(hpp 文件)分开。

所涉及的费力复制/粘贴似乎是机器的工作。有没有任何简单的工具可用于此任务?

c++ ide

3
推荐指数
1
解决办法
3674
查看次数