例:
template<class T>
class Base {
public:
Base();
friend class T;
};
Run Code Online (Sandbox Code Playgroud)
现在这不起作用......有没有办法做到这一点?
我实际上是想制作一个像这样的通用类封口机:
class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : private virtual ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// Cannot be instantiated
};
Run Code Online (Sandbox Code Playgroud)
我在这个网站上找到了这个例子,但我找不到它...(这里)
我知道还有其他方法可以做到这一点但是现在我很好奇你是否真的能做到这样的事情.
我正在尝试将表从Lua加载到C++,但我无法正确使用它.我正在通过第一次迭代就好了,但是在第二次调用lua_next时它崩溃了.有任何想法吗?
Lua文件:
level = { 1, 2, 3, }
Run Code Online (Sandbox Code Playgroud)
C++文件 - 首先我这样做了:
lua_getglobal( L, "level" );
for( lua_pushnil( L ); lua_next( L, 1 ); lua_pop( L, -2 ) )
{
if( lua_isnumber( L, -1 ) ) {
int i = (int)lua_tonumber( L, -1 );
//use number
}
}
lua_pop( L, 1 );
Run Code Online (Sandbox Code Playgroud)
然后我尝试从参考手册:
lua_getglobal( L, "level" );
int t = 1;
lua_pushnil( L );
while( lua_next( L, t ) ) {
printf( "%s - %s",
lua_typename( …
Run Code Online (Sandbox Code Playgroud) 我想我已经很好地掌握了如何在C++中处理内存,但是在C中做它是不同的我有点不对劲.
在C++中,我有构造函数和析构函数,我有非常简单的new和delete,我知道如何使用RAII封装它,使用智能指针和类.
但是在CI中无法以同样的方式处理malloc和free.我不知道如何隐藏它们以及如何自动化.我所能想到的只是使用函数来启动和销毁我的指针.但是我应该如何构建我的内存处理?
写这篇文章的时候,我意识到这更像是一个关于我理解C流程的问题,而不是其他任何问题,但一次只能提出一个问题.
编辑:谢谢你的答案,但我需要改写自己.
当我说我使用RAII和C++的智能指针时,我不希望C相同,我知道它不一样.但是我如何处理C++中的内存分配与这些技术有关.
例如,在我的类中,我动态地添加和销毁我的类使用的内存.这样我就可以实现一种封装,我不需要知道什么时候/如何/为什么类处理它的内存,它就是这样.这意味着我可以"隐藏"较低的内存处理,只关注一些"更大"的类.
我想知道的是在C中处理内存的最佳做法是什么?没有带有构造函数/析构函数的类来为我处理这个问题.在函数的开头分配内存或使用为我创建它的函数是否合适?我应该如何再次释放他们?
这些是广泛的问题,它们因情况而异,但您更喜欢处理它?您可以提供哪些提示和课程?
我用C++编程了一段时间,我使用了两种方法:
class Stuff {
public:
Stuff( int nr ) : n( nr ) { }
private:
int n;
}
Run Code Online (Sandbox Code Playgroud)
要么
class Stuff {
public:
Stuff( int nr ) {
n = nr;
}
private:
int n;
}
Run Code Online (Sandbox Code Playgroud)
注意:这与此不同,相似但不相同.
什么是最佳做法?
就像标题所说; 如何加载目录中的每个文件?我对c ++和lua感兴趣.
编辑:对于Windows我会很高兴一些真正的工作代码,尤其是对于lua.我可以使用boost :: filesystem for c ++.
指向成员的指针不是很常用,但它们非常强大,你如何使用它们以及你做过的最酷的事情是什么?
编辑: 这不是列出可能的事情,例如列出boost :: bind和boost :: function并不好.相反,也许他们很酷的用法?我知道他们自己很酷,但这不是什么意思.