PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
Re: [问题] A类别的函式内 呼叫 A类别函式 出错
楼主:
Caesar08
(Caesar)
2016-06-02 15:52:00
class A;
这是class declaration
template<class>class B;
这也是class declaration
class C
{
int i;
public:
void test();
};
这是class definition
其中void test()是member function declaration
template<class T>
class D
{
T i;
public:
void test();
};
这也是class definition
其中void test()也是member function declaration
void C::test(){}
这是member function definition
template<class T>
void D<T>::test(){}
这也是member function definition
非class template的class(如A与C)
会将member function的declaration与definition分开
declaration放在.h
definition放在.cpp
而class template的class(如B与D)
有2种做法(第3种是export,但把这东西忘了吧)
一种是把member function的declaration与definition放在一起
例如
//.hpp or .hxx or anything but not .h
template<class T>
class E
{
T i;
public:
void test(){}
};
然后为了说明这不是一般的.h档案,所以会把这档案取成别的名字
常见的有.hpp或.hxx或干脆没有副档名(如iostream)
所以这时候,就不需再有一个.cpp档案了
另一种做法是按照传统,把member function的declaration与definition分开
但是在.h档案(或.hpp或其他的)里面include该member function definition的档案
例如
//.h
template<class T>
class F
{
T i;
public:
void test();
};
#include"your/member/function/definition/file.cpp"
//.cpp
template<class T>
void F<T>::test(){}
然而你的方法却是include .cpp(然后里面在include .h)
不是不能这么做
只是当别人要用你的档案时,他会以为只要include .h就好
然后就发现compile不过,之后才知道原来你用的方式跟别人不一样
我以前都用第二种做法,但后来发现用第一种做法比较好
(用第二种容易让别人搞混,以为compile时也要把.cpp放进去,结果就error了)
还有,你给的那连结,我看一眼就关掉了
连main function都写不好的网志,没有看的必要
作者:
hunandy14
(Charlott.HonG)
2016-06-02 17:08:00
受益良多,一直想问这些问题,又不知道怎么问我试着练习一下档案在,差不多就是样子吗无副档名写在一起
https://goo.gl/xoQ4Xw
分开写在.cpp
https://goo.gl/7fch9z
想再问的,我如果写在同一个档案 定义跟宣告 要分开吗你说[main function都写不好] 具体是什么意思呢想知道~还有一个奇怪的问题XD 为什么要把.h分开呢 直接引.cpp
作者:
bibo9901
(function(){})()
2016-06-02 17:22:00
在同一个档案里可分可不分 看你的需要分开纯粹是一个档案太多行了不好看 #include其实就是复制贴上 和你写在同一个档案一样意思
作者:
EdisonX
(卡卡兽)
2016-06-02 19:47:00
受教了 推一个。
继续阅读
[问题] 请问C语言的函数问题
wasitom
[问题] OpenMP与OpenCV一起使用的程式问题
jason77623
[问题] struct 使用矩阵
mistborn82
[问题] QAudioInput, QAudioOutput桥接(Done)
chigi
[问题] A类别的函式内 呼叫 A类别函式 出错
hunandy14
[问题] 推积损毁问题
startbomb51
[问题] 继承架构设计的问题
sd016808
[问题] 多重继承下选择继承对像的问题
TMDTMD2487
[问题] 样板类别 的 运算子重载
hunandy14
[问题] C语言倒三角形
littlecc
Links
booklink
Contact Us: admin [ a t ] ucptt.com