как показывает опыт, используйте стек каждый раз, когда Вы можете. т.е. когда переменная никогда не необходима за пределами того объема.
быстрее, вызывает меньше фрагментации и собирается избежать других издержек, связанных с вызовом malloc или новый. выделение прочь стека является несколькими ассемблерными операциями, malloc или новый несколько сотен строк кода в эффективном внедрении.
его никогда не лучший для использования "кучи"... просто неизбежной.:)
Включение типа CP_M_ReferenceCounted, вероятно, лексически ПОСЛЕ определения типа ... можете ли вы напрямую связать эти два файла или воспроизвести проблему в простом примере?
Похоже, вам нужно обратиться к пространству имен соответственно. Например, следующие yyy.h и test.cpp имеют ту же проблему, что и ваш:
//yyy.h
#ifndef YYY_H__
#define YYY_H__
namespace Yyy {
class CP_M_ReferenceCounted
{
};
}
#endif
//test.cpp
#include "yyy.h"
typedef CP_M_ReferenceCounted FxRC;
int main(int argc, char **argv)
{
return 0;
}
Ошибка будет
...error: CP_M_ReferenceCounted does not name a type
Но добавьте строку «using namespace Yyy;» устраняет проблему, как показано ниже:
//test.cpp
#include "yyy.h"
// add this line
using namespace Yyy;
typedef CP_M_ReferenceCounted FxRC;
...
Поэтому проверьте область пространства имен в заголовках .h.