牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

C3203编译错误

在编译OgreMeshViewer的时候产生了C3203的错误:

meshviewer\exWTL\DotNetTabCtrl.h(1515) : error C3203: “CDotNetTabCtrl”: 未专用化的类 模板 不能用作 模板 变量,该变量属于 模板 参数“T”,应为 real 类型

其代码如下:
template <class TItem = CCustomTabItem>
class CDotNetTabCtrl :
    
public CDotNetTabCtrlImpl<CDotNetTabCtrl, TItem>
{
protected:
    typedef CDotNetTabCtrl thisClass;
    typedef CDotNetTabCtrlImpl
<CDotNetTabCtrl, TItem> baseClass;

// Constructors:
public:
    CDotNetTabCtrl()
    
{
    }


public:

    DECLARE_WND_CLASS(_T(
"WTL_DotNetTabCtrl"))  

    
//We have nothing special to add.
    
//BEGIN_MSG_MAP(thisClass)
    
//    CHAIN_MSG_MAP(baseClass)
    
//END_MSG_MAP()
}
;


根据MSDN所述:
// C3203.cpp
template< typename T >
struct X {
   
void f(X) {}
}
;

template
< typename T >
struct Y : public X<Y> {   // C3203
// try the following line instead
// struct Y : public X<Y<T> > {
   void f(Y) {}
}
;

int main() {
   Y
<int> y;
}



将第三行代码替换成:
public CDotNetTabCtrlImpl<CDotNetTabCtrl<TItem>, TItem>

即可。

posted on 2008-05-28 09:39 杨粼波 阅读(2688) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理