打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c如何正确地将.cpp拆分为.cpp和.h

我真的很擅长将.cpp分成.cpp和.h.

我之前使用过.h文件,但从未真正将.cpp分成.cpp和.h.

我知道.h文件仅用于声明而.cpp用于定义,我试图将.cpp拆分为.cpp和.h但我收到很多错误,所以我想知道是否有人可以帮助我我的代码.

以下类是尚未拆分为.cpp和.h的类,只是为了向您展示“之前的版本”.

TicketOrder.cpp

#include <iostream>using namespace std;class TicketOrder{private :        char type;        int quantity;public :          friend std::ostream& operator<<(std::ostream& os, TicketOrder const& order)         {                 os << " Type: " << order.type << ", Quantity: " << order.quantity;                 return os;         }        //Getters        int getQuantity() const;         {                        return quantity;         }        char getType() const;          {                        return type;          }        //Setters            void setQuantity (int x)                {                        quantity =x;                }        void setType(char y)                {                        type =y;                }   };

现在,我将上面的类拆分为.cpp和.h

TicketOrder.cpp

#include <iostream>#include "TicketOrder.h"using namespace std;class TicketOrder{        //Getters        int getQuantity() const                {                        return quantity;                }        char getType() const                {                        return type;                }        //Setters        void setQuantity (int x)                {                        quantity =x;                }        void setType(char y)                {                        type =y;                }        };

TicketOrder.h

#include <iostream>using namespace std;class TicketOrder{private :        char type;        int quantity;public :          friend std::ostream& operator<<(std::ostream& os, TicketOrder const& order)        {                 os << " Type: " << order.type << ", Quantity: " << order.quantity;                 return os;        }        //Getters        int getQuantity() const;            char getType() const;        //Setters        void setQuantity (int x);            void setType(char y);       };

我还有一个用于包含我不会在这里包含的主类的类,因为它很长并且我认为它不重要因为我知道我正在做.h和.cpp错误.

当我尝试编译main时,它给了我这个错误:

Undefined                       first referenced symbol                             in fileTicketOrder::getQuantity() const    /var/tmp//ccaSflFG.oTicketOrder::setType(char)          /var/tmp//ccaSflFG.oTicketOrder::setQuantity(int)       /var/tmp//ccaSflFG.old: fatal: Symbol referencing errors. No output written to a.outcollect2: ld returned 1 exit status

任何人都可以帮我拆分.h和.cpp吗?或者给我一些建议?我做了很多研究,无法弄清楚出了什么问题.

谢谢.

解决方法:

您的.cpp文件错误,因为重新声明了类,所以这是错误的.它应该是这样的:

#include <iostream>#include "TicketOrder.h"using namespace std;//Gettersint TicketOrder::getQuantity() const{    return quantity;}char TicketOrder::getType() const{    return type;}//and so on

另外,请注意,在头文件中添加using命名空间,正如您所做的那样,被视为非常糟糕的样式.

来源:https://www.icode9.com/content-4-367751.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
const char*, char const* and char *const 等的区别
一个跨平台的 C 内存泄漏检测器
用ICE开发分布式程序
C++11的default和delete关键字
学习C++
聊聊C++临时对象的析构时间点
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服