小编MSa*_*ers的帖子

我必须在何处以及为何要使用"模板"和"typename"关键字?

在模板,在那里,为什么我必须把typenametemplate上依赖的名字呢?究竟什么是依赖名称?我有以下代码:

template <typename T, typename Tail> // Tail will be a UnionNode too.
struct UnionNode : public Tail {
    // ...
    template<typename U> struct inUnion {
        // Q: where to add typename/template here?
        typedef Tail::inUnion<U> dummy; 
    };
    template< > struct inUnion<T> {
    };
};
template <typename T> // For the last node Tn.
struct UnionNode<T, void> {
    // ...
    template<typename U> struct inUnion {
        char fail[ -2 + (sizeof(U)%2) ]; // Cannot be instantiated for any …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++-faq dependent-name typename

1061
推荐指数
8
解决办法
15万
查看次数

在linux/unix下是否有相当于WinAPI的MAX_PATH?

如果我想分配一个char数组(在C中),保证它足够大以容纳任何有效的绝对路径+文件名,它需要多大.

在Win32上,有MAX_PATH定义.Unix/linux的等价物是什么?

c c++ unix linux posix

61
推荐指数
5
解决办法
6万
查看次数

如何防止非专业模板实例化?

我有一个模板化class(称之为Foo),它有几个特化.如果有人试图使用非专业版本,我希望编译失败Foo.

这是我实际拥有的:

template <typename Type>
class Foo
{
  Foo() { cannot_instantiate_an_unspecialized_Foo(); }

  // This method is NEVER defined to prevent linking.
  // Its name was chosen to provide a clear explanation why the compilation failed.
  void cannot_instantiate_an_unspecialized_Foo();
};

template <>
class Foo<int>
{    };

template <>
class Foo<double>
{    };
Run Code Online (Sandbox Code Playgroud)

以便:

int main()
{
  Foo<int> foo;
}
Run Code Online (Sandbox Code Playgroud)

适用时:

int main()
{
  Foo<char> foo;
}
Run Code Online (Sandbox Code Playgroud)

才不是.

显然,编译器链只在链接过程发生时才会抱怨.但有没有办法让它在之前抱怨?

我可以用boost.

c++ templates boost compilation

38
推荐指数
3
解决办法
5090
查看次数

如何为临时文件创建std :: ofstream?

好的,mkstemp是在POSIX中创建临时文件的首选方法.

但它会打开文件并返回一个int文件描述符.从那以后我只能创建一个FILE*,而不是一个std::ofstream,我更喜欢C++.(显然,在AIX和其他一些系统上,您可以std::ofstream从文件描述符创建一个,但是当我尝试时,我的编译器会抱怨.)

我知道我可以获得一个临时文件名,tmpnam然后用它打开我自己的ofstream,但由于竞争条件,这显然是不安全的,并导致编译器警告(Linux上的g ++ v3.4.):

warning: the use of `tmpnam' is dangerous, better use `mkstemp'
Run Code Online (Sandbox Code Playgroud)

那么,是否有任何可移植的方法来创建std::ofstream临时文件?

c++ file-io file mkstemp

36
推荐指数
2
解决办法
2万
查看次数

用C++编写操作系统

什么是使用c ++创建自己的操作系统的方法.我已经创建了启动加载器(使用nasm,qemu),但我不知道为这个启动加载器添加内核.

c++

31
推荐指数
4
解决办法
3万
查看次数

在c ++中获取`wchar_t*`的长度

请问,如何wchar_t*在c ++中找出类型变量的长度?

代码示例如下:

wchar_t* dimObjPrefix = L"retro_";
Run Code Online (Sandbox Code Playgroud)

我想知道dimObjPrefix包含多少个字符

c++ string wchar-t

29
推荐指数
2
解决办法
7万
查看次数

为什么在C++中而不是在C中允许对const全局变量进行多重定义?

由于One Definition Rule,C或C++中不允许对全局变量进行多重定义.但是,在C++中,const全局变量可以在多个编译单元中定义而没有错误.这和C中的不一样.

为什么C++允许这样做而C不允许?与C相比,为什么const全局的使用和行为在C++中以这种方式与非const全局不同?关于const,C++和C的内容正在发生什么?

例如,这在C++中是允许的,但在C中是错误的:

// Foo.cpp
const int Foo = 99;

// Main.cpp
const int Foo = 99;
int main()
{
    cout << Foo << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这对C来说很好,但C++有问题:

// Foo.cpp
const int Foo = 99;

// Main.cpp
extern const int Foo;
int main()
{
    cout << Foo << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ const one-definition-rule

28
推荐指数
3
解决办法
8618
查看次数

如何分析二进制文件?

我有一个二进制文件.我不知道它是如何格式化的,我只知道它来自delphi代码.

是否存在分析二进制文件的任何方式?

是否存在任何"模式"来分析和反序列化具有未知格式的文件的二进制内容?

binary serialization code-analysis reverse-engineering

26
推荐指数
6
解决办法
6万
查看次数

通过调整大小缩小容器时,元素的排序是什么?

如果我有一个标准的C++容器,std::vector<Bar>并通过调用.resize()小于当前的大小来缩小它,.size()那么多余的元素被破坏了?

(如果你能找到两个不同的实现,那么实现选择很有意思.)

(这是受詹姆斯坎泽的评论启发.)

c++

26
推荐指数
2
解决办法
651
查看次数

在networkx(Python)中获取DiGraph的根(头)

我试图networkx在项目中使用一些图形表示,我不知道如何做一些应该简单的事情.我创建了一个带有一堆节点和边的有向图,这样在这个图中只有一个根元素.现在,我想做的是从根开始,然后遍历每个元素的子元素并从中提取一些信息.我如何获得这个DiGraph的根元素?

所以它会是这样的:

#This is NOT real code, just pseudopython to convey the general intent of what I'd like to do

    root = myDiGraph.root()
    for child in root.children():
        iterateThroughChildren(child)

def iterateThroughChildren(parent):
    if parent.hasNoChildren(): return
    for child in parent.children():
        //do something
        //
        iterateThroughChildren(child)
Run Code Online (Sandbox Code Playgroud)

我没有在文档中看到任何提示检索DiGraph根的简单方法 - 我应该手动推断这个吗?:O我试着iter(myDiGraph)希望它会从根开始迭代,但顺序似乎是随机的......:\

将不胜感激,谢谢!

python directed-graph networkx

24
推荐指数
1
解决办法
9981
查看次数