程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++模板編程問題-C++模板編程問題,各種報錯,但一直找不到錯,求大俠們指導,感激不盡

c++模板編程問題-C++模板編程問題,各種報錯,但一直找不到錯,求大俠們指導,感激不盡

編輯:編程綜合問答
C++模板編程問題,各種報錯,但一直找不到錯,求大俠們指導,感激不盡

在實現一個C++模板類時出現諸多錯誤,剛入手模板編程,找錯找了大半天,未果,糾結中,求助大神們指導,感激不盡。這是一個類聲明,定義部分感覺不會出錯,大多也類似,只給出了部分
編譯錯誤報告 語法錯誤 :1. 缺少“;”(在“<”的前面)——報錯行1
2: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認 int——報錯行1(我傳入模板實參為int)
template class max_subarray;//前置聲明
template std::istream &operator>>(std::istream &is, const max_subarray &target)
{
is >> target.varray.push_back();
return is;
}
template
class max_subarray
{
public:
friend std::istream &operator>> (std::istream &is, const max_subarray &target);//友員
max_subarray() = default;//默認構造函數
報錯行1 pair get_index() const;//保存索引對
T get_max_sum() const;//獲取器
private:
//工具函數
void set_index(const size_t startIndex,const size_t endIndex);//設置器
void set_max_sum(const T maxSum);//設置器
void find_max_every_subarray(const vector &vArray, const size_t start);
void find_max_subarray(const vector &vArray);
//私有成員
pair index_range;
T &max_sum;
vector varray;
};

//類的定義
template
pair max_subarray::get_index() const
{
return{ first, second };
}

template
T &max_subarray::get_max_sum() const
{
return max_sum;
}

template
void max_subarray::set_index(size_t startIndex, size_t endIndex)
{
index_range.first = startIndex;
index_range.second = endIndex;
}

最佳回答:


我是菜鳥哈!覺得你的代碼寫的挺亂的,沒怎麼看懂代碼要實現什麼。我比較習慣把類模板的成員函數在類裡面實現,然後寫到頭文件裡去。至少在代碼裡,你的定義vector和pair時都沒有加上類型參數的,肯定通不過啊。
我簡單改了一下:

#include
#include
#include
using namespace std;

template
class max_subarray
{
public:
friend istream &operator>>(istream &is, const max_subarray &target)
{
is >> target.varray.push_back();
return is;
}
max_subarray(){};//默認構造函數
pair get_index() const//獲取器
{
return index_range;
}
T get_max_sum() const//獲取器
{
return max_sum;
}
private:
//工具函數
void set_index(const size_t startIndex,const size_t endIndex)//設置器
{
index_range.first = startIndex;
index_range.second = endIndex;
}
//void set_max_sum(const T maxSum);//設置器
//void find_max_every_subarray(const vector &vArray,const size_t start);
//void find_max_subarray(const vector &vArray);
//私有成員
pair index_range;
T max_sum;
vector varray;
};

int main()
{
return 0;
}
/*至少編譯是沒問題的,希望對你有幫助^-^*/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved