[英]Problem compiling C++ class
我正在运行一个C ++程序,它使用另一个.cpp文件中的类。 该类只有一个构造函数。 它在我单独测试时有效。 主程序编译,但是当我运行它时,我在构造函数中有一个错误。 任何人都可以想到可能发生的任何情况? 谢谢。
我想我只是在终端中运行代码,这很好。 但是当我尝试在eclipse中构建项目时,它显示以下代码有多个定义错误:
class model
{
public:
int textures [];
float vertices[][3];
float triangles[][13];
public:
model(const char*); // constructor
};
model::model(const char* filename)
{
错误信息是:`model :: model(char const *)'的多重定义
任何想法?
无论如何,我会随机猜测(鉴于你发布的内容,没什么可去的)。 我猜你已经溢出了你的三角形数组(也许计数器太大了)而且你正在摧毁你的堆或堆栈。
还有一件事。 这一行:
if (str[0] != '#' and !str.empty())
马车。 如果str为空,则不希望读取str [0]。 您需要切换订单:
if (!str.empty() and str[0] != '#')
您需要将代码拆分为.h(标头)和a.cpp(实现)文件并放入:
model::model(const char* filename)
{
在后者。 或者,重写您的类,以便构造函数(以及任何其他成员函数)的定义位于头文件的类中:
class model {
...
model(const char*) {
// constructor body here
}
};
发生错误是因为每次将标题包含在某处时,您都会获得该函数的新定义。 如果它在程序中的多个位置使用,则会出现错误。
您可能希望在单独的实现文件中定义构造函数(类转到标题以便其他人可以使用它,函数实现转到.cpp / cc文件)。 或者,您可以在类块中定义它,而不是在外部执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.