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 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器