我正在尝试重载林类中的+运算符,林是树的集合,而+运算符应该将两个林合并为一个.我有以下代码作为我的类定义:
template<typename NODETYPE>
class Forest
{
public:
friend Forest& operator+<>(Forest&, Forest&);
friend ostream& operator<<<>(ostream&, const Forest&);
friend istream& operator>><>(istream&, Forest&);
Forest();
Forest( const Forest& otherForest);
~Forest();
void nodes(int&) const;
private:
ForestNode<NODETYPE> *root;
ForestNode<NODETYPE> *getNewNode( const NODETYPE &);
};
Run Code Online (Sandbox Code Playgroud)
以下是我对operator +的实现:
template<typename NODETYPE>
Forest& operator+<>(Forest& f1, Forest& f2)
{
f3 = new Forest();
f3.root = *f1.*root;
f3.root.sibling = *f2.*root;
*f1.root = 0;
*f2.root = 0;
return f3;
}
Run Code Online (Sandbox Code Playgroud)
我在编译时遇到以下错误:
|28|error: expected constructor, destructor, or type conversion before '&' token|
第28行指的是我的运算符+实现的签名.
我认为要纠正它我应该添加到返回类型,给出: …
系统信息:我在2个月大的笔记本电脑上运行64位Ubuntu 10.10.
大家好,我对fork()C中的功能有疑问.从我正在使用的资源(Stevens/Rago,YoLinux和Opengroup)我理解当你分叉一个进程时,父进程和子进程都继续执行从下一个命令.由于fork()返回0到子节点,以及子节点到父节点的进程ID,您可以使用两个if语句来分散它们的行为,一个if(pid == 0)用于子节点,并if(pid > 0)假设您分叉pid = fork().
现在,我发生了最奇怪的事情.在我的main函数的开头,我打印到stdout几个已分配给变量的命令行参数.这是整个程序中的第一个非赋值语句,但是,似乎每次我fork在程序中稍后调用时,都会执行这些print语句.
我的程序的目标是创建一个"进程树",每个进程有两个子进程,深度为3,从而创建初始可执行文件的15个子进程.每个进程在fork之前和之后打印它的父进程ID及其进程ID.
我的代码如下并且被正确评论,命令行参数应该是"ofile 3 2 -p"(我还没有实现-p/-c标志":
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
if(argc != 5)//checks for correct amount of arguments
{
return 0;
}
FILE * ofile;//file to write to
pid_t pid = 1;//holds child process id
int depth = atoi(argv[2]);//depth of the process …Run Code Online (Sandbox Code Playgroud) 系统信息:我在2个月大的笔记本电脑上运行64位Ubuntu 10.10.
大家好,我对C中的fork()函数有疑问.从我正在使用的资源(Stevens/Rago,YoLinux和Opengroup)我理解当你分叉一个进程时,父进程和子进程从下一个命令继续执行.由于fork()将0返回给子节点,并将子节点的进程id返回给父节点,因此可以使用两个if语句来分散它们的行为,一个if(pid = 0)表示子节点,if(pid> 0),假设你用pid = fork()分叉.
现在,我发生了最奇怪的事情.在我的main函数的开头,我打印到stdout已经分配给变量的几个命令行参数.这是整个程序中的第一个非赋值语句,但有时当我稍后在程序中调用fork时,会执行此print语句.
我的程序的目标是创建一个"进程树",每个进程有两个子进程,深度为3,从而创建初始可执行文件的14个子进程.每个进程在fork之前和之后打印其父进程ID及其进程ID.
我的代码如下并且被正确评论,命令行参数应该是"ofile 3 2 -p"(我还没有实现-p/-c标志):
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
if(argc != 5)//checks for correct amount of arguments
{
return 0;
}
FILE * ofile;//file to write to
pid_t pid = 1;//holds child process id
int depth = atoi(argv[2]);//depth of the process tree
int arity = atoi(argv[3]);//number of children each process should have
printf("%d%d", depth, arity);
ofile = fopen(argv[1], "w+");//opens specified file for …Run Code Online (Sandbox Code Playgroud)