我是C ++的初学者,以下示例代码非常简单,但我遇到了一个令人费解的错误。 Field has incomplete type "ItemType"
代码来自Data Abstraction& Frank Carrano用C ++解决问题。 PG。 32 - 33,Pg。 37
我在Xcode 6.0 (6A267n)
OSX Yosemite Beta 10.10
在头文件(Listing C1-03)
中/** @file PlainBox.h */
#ifndef __PlainBox__
#define __PlainBox__
//Indicates this is a template definition
template<class ItemType>
// Declaration for the class PlainBox
class PlainBox
{
private:
// Data field
ItemType item; //error here
public:
// Default constructor
PlainBox();
// Paramerized constructor
PlainBox(const ItemType& theItem);
// Method to change the value of the data field
void setItem(const ItemType& theItem);
// Method to return item form the data field
ItemType getItem() const;
}; // end PlainBox
#include "PlainBox.cpp"
#endif /* defined(__PlainBox__PlainBox__) */
在cpp文件(listing C1-04)
中/** @file PlainBox.cpp */
#include "PlainBox.h"
template<class ItemType>
PlainBox <ItemType> :: PlainBox ()
{
} //end default constructor
template<class ItemType>
PlainBox <ItemType> ::PlainBox(const ItemType& theItem)
{
item = theItem;
} //end constructor
template<class ItemType>
void PlainBox <ItemType> ::setItem(const ItemType &theItem)
{
item = theItem;
} //end setItem
template<class ItemType>
ItemType PlainBox <ItemType> ::getItem() const
{
return item;
} //end getItem
编辑:结果我必须从Xcode项目中删除.cpp文件并删除.cpp文件中的#include
。