Dat*_*bot 17 c++ class redefinition
代码转储道歉:
gameObject.cpp:
#include "gameObject.h"
class gameObject
{
private:
int x;
int y;
public:
gameObject()
{
x = 0;
y = 0;
}
gameObject(int inx, int iny)
{
x = inx;
y = iny;
}
~gameObject()
{
//
}
int add()
{
return x+y;
}
};
Run Code Online (Sandbox Code Playgroud)
gameObject.h:
class gameObject
{
private:
int x;
int y;
public:
gameObject();
gameObject(int inx, int iny);
~gameObject();
int add();
};
Run Code Online (Sandbox Code Playgroud)
错误:
||=== terrac, Debug ===|
C:\terrac\gameObject.cpp|4|error: redefinition of `class gameObject'|
C:\terrac\gameObject.h|3|error: previous definition of `class gameObject'|
||=== Build finished: 2 errors, 0 warnings ===|
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚出了什么问题.救命?
sel*_*tze 39
您正在头文件中定义类,将头文件包含到*.cpp文件中并再次定义该类,因为头文件将第一个定义拖入转换单元.但每个翻译单元只允许一个gameObject类定义.
实际上,您不需要第二次定义类来实现这些功能.实现这样的功能:
#include "gameObject.h"
gameObject::gameObject(int inx, int iny)
{
x = inx;
y = iny;
}
int gameObject::add()
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
等等
小智 9
cpp文件中的实现应该在表单中
gameObject::gameObject()
{
x = 0;
y = 0;
}
gameObject::gameObject(int inx, int iny)
{
x = inx;
y = iny;
}
gameObject::~gameObject()
{
//
}
int gameObject::add()
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
不在类gameObject {}定义块中
小智 8
添加头文件
#pragma once
Run Code Online (Sandbox Code Playgroud)
你定义同一个类两次就是原因。
如果您的目的是实现 CPP 文件中的方法,请执行以下操作:
gameObject::gameObject()
{
x = 0;
y = 0;
}
gameObject::~gameObject()
{
//
}
int gameObject::add()
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您应该.h像这样包装文件:
#ifndef Included_NameModel_H
#define Included_NameModel_H
// Existing code goes here
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100926 次 |
| 最近记录: |