繁体   English   中英

编译C ++类时出现问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM