不知道什麼我試圖做的是不好的,但這裏是我的問題: 我有一些模板的功能,如對模板的宏
std::vector<T> operator - (const std::vector<T>& data1, const std::vector<T>& data2);
std::vector<T> operator * (const std::vector<T>& data1, const std::vector<T>& data2);
std::vector<T> operator & (const std::vector<T>& data1, const std::vector<T>& data2);
....等等。所有這些功能都完全一樣的定義,除了運營商,所以我試圖寫這樣
#define _BINARY_OP_ON_DATASET (OP_TYPE)
template <typename T> \
std::vector<T> operator OP_TYPE (const std::vector<T>& data1, const std::vector<T>& data2)\
{\
std::vector<T> result;\
result.push_back(data1.begin().val OP_TYPE data1.begin().val)/*sample implementation*/\
return result;\
}
_BINARY_OP_ON_DATASET (&)
_BINARY_OP_ON_DATASET (+)
一個宏,我得到了一堆錯誤
Error 1 error C2833: 'operator OP_TYPE' is not a recognized operator or type
Error 2 error C2988: unrecognizable template declaration/definition
Error 3 error C2059: syntax error : 'newline'
Error 5 error C2143: syntax error : missing ';' before '<'
Error 6 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
...以及更多 任何人都可以看到這是什麼問題?
感謝您的任何幫助。
CV
你打算怎麼到包含''T' +'雙載體?你怎麼去'&'和'--'兩個向量? – Nawaz
我的壞..這是一個錯字,編輯的代碼 – blueskin
確定..爲Kerrek SB和ildjarn指出,他們是愚蠢的語法錯誤。 – blueskin