gpt4 book ai didi

c++ - 将构造函数添加到我的结构时不断出现链接器错误

转载 作者:行者123 更新时间:2023-11-28 02:59:34 24 4
gpt4 key购买 nike

所以这个文件编译得很好。如果我决定向我的默认对象添加一个构造函数,我会收到链接器错误。

#ifndef VERTEX_FORMATS_H_
#define VERTEX_FORMATS_H_

#include "../utilities/float3.h" (this file does not have other includes within it)
#include "../utilities/float2.h" (this file does not have other includes within it)

struct VERTEX_PARTICLES
{
float3 v3fPosition; //has a default constructor that set its own values to zero
float3 v3fVelocity; //has a default constructor that set its own values to zero
float3 v3fAcceleration; //has a default constructor that set its own values to zero
float fCurLife;
float fEndLife;
float fCurScale;
float fStartScale;
float fMidScale;
float fEndScale;
unsigned int uiColor;

VERTEX_PARTICLES( void );
};


VERTEX_PARTICLES::VERTEX_PARTICLES( void ) :
fCurLife( 0.0f ), fEndLife( 0.0f ),
fCurScale( 0.0f ), fStartScale( 0.0f ),
fMidScale( 0.0f ), fEndScale( 0.0f ),
uiColor( 0U ) { }

#endif

如果我删除构造函数,文件编译得很好,但是有一个构造函数会给我链接器错误:

VERTEX_PARTICLES::VERTEX_PARTICLES(void)"(??0VERTEX_PARTICLES@@QAE@XZ) already defined in Game.obj

我猜它是在提示我在别处不止一次地添加了这个文件?但我认为这不是问题,因为我 #defined 我的对象,而且没有构造函数也不会给我带来问题。

最佳答案

:

#ifndef VERTEX_FORMATS_H_
#define VERTEX_FORMATS_H_

不防止构造函数VERTEX_PARTICLES::VERTEX_PARTICLES(void)的多个“实现”:

例如,如果您有 2 个 cpp 文件,都使用 #include "vertex_formats.h"

两者都将包含 header ,并且您将拥有构造函数的 2 个实现,因此它将被编译两次并且链接器会找到 2 个相同的命名定义。

关于c++ - 将构造函数添加到我的结构时不断出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21176381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com