Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用g+编译client_test.cpp+;在ubuntu 14.04上_C++_G++_Libtorrent - Fatal编程技术网

C++ 使用g+编译client_test.cpp+;在ubuntu 14.04上

C++ 使用g+编译client_test.cpp+;在ubuntu 14.04上,c++,g++,libtorrent,C++,G++,Libtorrent,我正在尝试编译libtorrent提供的一个名为client_test.cpp的示例程序。代码如下: 我正在使用以下命令进行编译: g++ client_test.cpp -DBOOST_ASIO_SEPARATE_COMPILATION -I/usr/local/include -o client_test >& log 这是错误日志: 谢谢您的帮助,如果有任何其他信息可以帮助诊断问题,请告诉我。正如Pawel所说,这是一个非常多的代码 我看到很多不完整的类型错误。当您试图

我正在尝试编译libtorrent提供的一个名为client_test.cpp的示例程序。代码如下:

我正在使用以下命令进行编译:

g++ client_test.cpp -DBOOST_ASIO_SEPARATE_COMPILATION -I/usr/local/include -o client_test >& log
这是错误日志:


谢谢您的帮助,如果有任何其他信息可以帮助诊断问题,请告诉我。

正如Pawel所说,这是一个非常多的代码

我看到很多不完整的类型错误。当您试图为尚未完全实现/已知的结构分配空间时,就会发生这种错误,因此编译器无法正确分配空间并返回此错误

例如:

class A {
      A aVariableOfTypeA;
      ...
}
你会得到同样的错误

要解决此问题,您需要使用指针:

class A {
      A* aVariableOfTypeA;
      ...
}
在编译器找到成员变量(aVariableOfTypeA)的那一刻,类型“Class A”已经被定义,因此为指针分配空间是合法的,因为指针占用已知的内存量(比如内存字的大小)

所以,看看你的代码,看看你是否发现了与我上面写的类似的东西。 希望这有帮助

---针对πάντα的评论ῥεῖ

在我的示例中,您不需要转发声明,因为成员变量类型是它自己的类。 但是,考虑一下:

class A {
 A* memberA;
 B* memberB;
};

class B {
 A* memberA;
 B* memberB;
}
在这种情况下,您需要使用前向声明,因为在您定义A时,您使用了尚未定义的类型(B),因此您需要让编译器知道B应该是什么

随附远期声明:

class B; //Letting the compiler know that B will be a class;
class A {
 A* memberA;
 B* memberB;
};

class B {
 A* memberA;
 B* memberB;
}

这是非常多的代码和错误。我们不是真正的调试服务。你试过自己修吗?也许你应该去你获取代码的地方问这个问题?或者学习它附带的一些手册?”要解决这个问题,你需要使用一个指针:“。。。和一个向前的宣言!在这种情况下,不需要使用转发声明。A类{A*A;};A A;A b;b、 a=&a;很好,“您不需要使用转发声明…”是的,但在大多数情况下它是更好的选择(省略类声明所依赖的
#include
语句)好的,我在解释中包含了它。谢谢你指出这一点。