// InternalTemplate.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
template<class T>
struct LeftSide
{
static void insert(T*& newLink, T*& parent)
{
parent->getLeft() = newLink;
newLink->parent = newLink;
}
};
template<class T>
struct Link
{
T* parent_;
T* left_;
T* right_;
T*& getParent()const
{
return parent_;
}
template<class Side>
void plugIn(Link<T>*& newLink);
};
template<class T>
template<class Side>
void Link<T>::plugIn(Link<T>*& newLink)//<<-----why can't I type
//void Link<T>::plugIn<Side>(Link<T>*& newLink)<---<Side> next to plugIn
{
Side::insert(newLink,this);
}
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
我覺得奇怪的是我必須爲類指定參數,但不能爲函數指定參數。有什麼理由?在類和函數之間的模板中缺乏正交性
所以基本上沒有正交語法保留(通過決定)我是對嗎? – 2010-09-30 11:53:31
@我們無能爲力:是的,我們無能爲力:) – Chubsdad 2010-09-30 11:56:04
是的,我認爲您的文章中的引文在這種情況下是相關的。 'void鏈接 :: plugIn '編譯MSVC++ [only]。刪除我的答案是不正確的。 –
2010-09-30 12:03:50