c++ - C++头文件和cpp文件构造函数多个错误
问题描述
我正在使用 Clion 在 C++ 中进行编码。
我正在尝试制作一个Date.cpp
文件和一个Date.h
文件。
这是我的代码:
#include "Date.h"
// Date constructor
Date::Date(int year, int month, int day)
{
SetDate(year, month, day);
}
// Date member function
void Date::SetDate(int year, int month, int day)
{
m_month = month;
m_day = day;
m_year = year;
}
class Date
{
private:
int m_year;
int m_month;
int m_day;
public:
Date(int year, int month, int day);
void SetDate(int year, int month, int day);
int getYear() { return m_year; }
int getMonth() { return m_month; }
int getDay() { return m_day; }
};
// Date constructor
Date::Date(int year, int month, int day)
{
SetDate(year, month, day);
}
// Date member function
void Date::SetDate(int year, int month, int day)
{
m_month = month;
m_day = day;
m_year = year;
}
我不断收到这些错误:
Date::Date(int, int, int) 的多重定义
和
Date::SetDate(int, int, int) 的多重定义
我应该如何重新组织我的代码,使其不再说我有多个定义?
解决方案
您看到的错误是因为您的.h
和.cpp
文件都定义了相同的Date::Date()
实现Date::SetDate()
主体。从.h
文件中删除它们,因为它们不属于那里,因为它们在.cpp
文件中。
通常,.h
文件应该用于声明和内联定义(即,像您的get..()
方法),而.cpp
文件应该用于非行定义。
日期.h
#ifndef DateH // don't forget a header guard!
#define DateH
class Date
{
private:
int m_year;
int m_month;
int m_day;
public:
Date(int year, int month, int day);
void SetDate(int year, int month, int day);
// these are OK here!
int getYear() { return m_year; }
int getMonth() { return m_month; }
int getDay() { return m_day; }
// Or, you can move their definitions into the .cpp file, if you want...
/*
int getYear();
int getMonth();
int getDay();
*/
};
#endif
日期.cpp
#include "Date.h"
// Date constructor
Date::Date(int year, int month, int day)
{
SetDate(year, month, day);
}
// Date member function
void Date::SetDate(int year, int month, int day)
{
m_month = month;
m_day = day;
m_year = year;
}
// If you choose to move their definitions here...
/*
int Date::getYear()
{
return m_year;
}
int Date::getMonth()
{
return m_month;
}
int Date::getDay()
{
return m_day;
}
*/
推荐阅读
- javascript - 按自定义属性搜索 amazon cognito 用户
- node.js - Sequelize 查询返回 Promise。如何等待查询返回结果?
- php - str_replace,给我错误的结果仅当其中有数字时
- regex - 用正则表达式忽略某些字符
- python - Python 使用命名空间解析 XML 文件
- javascript - Node.js:具有顺序+异步输入/输出的并行处理
- c# - 如何从控制器类更新 MainWindow 中的标签?
- hadoop - hadoop - 伪分布式模式下的多个数据节点配置
- apache-kafka - 我们可以在 Kafka 中进行服务器端过滤吗?
- php - 有效载荷完整性加密对 API 重要吗?