LVB10101111 2015-01-20 02:42 采纳率: 0%
浏览 2428

C++template expression的问题


 #include<iostream>
 using namespace std;

 template <typename T,int size>
class Buffer{
 private:
    T b_array[size];
 public:
    T* getBuffer(){
        return b_array;
    }

    T& operator [](int index){
        return b_array[index];
    }

    void bprint(){
        cout<<getBuffer()<<endl;
    }

 };
 //为什么void Buffer<char,4>::bprint(){...}就可以?
 template<int size>
 void Buffer<char, size>::bprint(){
    cout << "Special input:" << getBuffer();
 }

 template<int size>
 void Buffer<int, size>::bprint(){
    for (int i = 0; i < size; i++){
        cout << b_array[i] << " ";
    }
 }

 int main(){
    Buffer<char,5> buffer;
    strcpy(buffer.getBuffer(), "Hello");
    buffer.bprint();
    cout << endl;

    Buffer<int, 4> buffer2;
    for (int i = 0; i < 4; i++){
        buffer2[i] = i + 1;
    }
    buffer2.bprint();
    getchar();
    getchar();
 }

为什么会出现这样的错误:
Error 6 error C2333: 'Buffer::bprint' : error in function declaration; skipping function body f:\work\c++\visual studio 2013\exam_review\exam_review\template.cpp 18 1 Exam_review
Error 7 error C2333: 'Buffer::bprint' : error in function declaration; skipping function body f:\work\c++\visual studio 2013\exam_review\exam_review\template.cpp 18 1 Exam_review
Error 4 error C2976: 'Buffer' : too few template arguments f:\work\c++\visual studio 2013\exam_review\exam_review\template.cpp 30 1 Exam_review
Error 2 error C2995: 'void Buffer::bprint(void)' : function template has already been defined f:\work\c++\visual studio 2013\exam_review\exam_review\template.cpp 30 1 Exam_review
Error 3 error C3855: 'Buffer': template parameter 'T' is incompatible with the declaration f:\work\c++\visual studio 2013\exam_review\exam_review\template.cpp 30 1 Exam_review
Error 1 error C3860: template argument list following class template name must list parameters in the order used in template parameter list f:\work\c++\visual studio 2013\exam_review\exam_review\template.cpp 30 1 Exam_review
Error 5 error C3860: template argument list following class template name must list parameters in the order used in template parameter list f:\work\c++\visual studio 2013\exam_review\exam_review\template.cpp 37 1 Exam_review

  • 写回答

3条回答 默认 最新

  • qq237620197 2015-01-20 08:48
    关注

    template
    void Buffer::bprint(){
    cout << "Special input:" << getBuffer();
    }

    template
    void Buffer::bprint(){
    for (int i = 0; i < size; i++){
    cout << b_array[i] << " ";
    }
    }

    兄弟,这段问题略大

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建