1. 程式人生 > >關於c++類模板及連線問題解決方法

關於c++類模板及連線問題解決方法

這個是鄙人發表一篇論壇,剛結帖,由於沒有回覆次數,導致沒寫結貼總結,在這寫下結貼總結,也希望以後也出現此問題的朋友們知道怎麼處理:

論壇連結:http://bbs.csdn.net/topics/392016457#new_post

總結:

1、通過一樓的提示,我百度了一下,看到這篇部落格後,知道所以然了:https://zm12.sm-tc.cn/?src=http%3A%2F%2Fwww.cnblogs.com%2FBraveliu%2Fp%2F3442990.html&uid=6946bd3494759db0b7aa5ee0aad2360e&hid=c7f095e433184398ae273b371c5809fc&pos=2&cid=9&time=1473385130497&from=click&restype=1&pagetype=0000004000000402&bu=web&query=%E7%B1%BB%E6%A8%A1%E6%9D%BF%E7%9A%84%E5%A3%B0%E6%98%8E%E4%B8%8E%E5%AE%9A%E4%B9%89&mode=&uc_param_str=dnntnwvepffrgibijbprsvdsei

宣告與定義分開,得在主函式中引入.cpp檔案,而不是.h檔案,若

引用.h檔案也會報連線錯誤,我的錯誤就屬於這種情況,還可以向一樓所說那樣把定義與宣告放在一起也可以解決,連結的部落格裡有個連結講序了緣由。

2、在論壇中我所說編譯器問題,在程式碼中有個隱含問題,髒資料,所以在釋放是還的加上指標指向NULL,這樣可以使程式更好執行,我在Mac下中xcode完成最後測試,是沒有問題,完美執行的。

貼下程式碼:

//

//  ProblemTemplate.cpp

//  test_1

//

//  Created by test on 16/9/8.

//  Copyright © 2016 test. All rights reserved.

//

#include "ProblemTemplate.hpp"

usingnamespace std;

#define CTTT template <typename T1, typename T2, typename T3>

#define CT ClassTemplate<T1, T2, T3>::

//輸入

CTTTvoid CT Input()

{

cin >>m_array_num_1;

m_array_1 = new T1[m_array_num_1];

   for (int i=0; i<m_array_num_1; i++)

    {

       cin >> m_array_1

[i];

    }

   getchar();

m_array_2 = new T2[m_array_num_2];

cin >>m_array_num_2;

   for (int i=0; i<m_array_num_2; i++)

    {

       cin >> m_array_2[i];

    }

   getchar();

cin >>m_array_num_3;

m_array_3 = new T3[m_array_num_3];

   for (int i=0; i<m_array_num_3; i++)

    {

       cin >> m_array_3[i];

    }

   getchar();

}

//輸出

CTTTvoid CT Output()

{

//排序且去重複

    InsertSort<T1>(m_array_1,m_array_num_1);

    InsertSort<T2>(m_array_2,m_array_num_2);

    InsertSort<T3>(m_array_3,m_array_num_3);

   //輸出

cout <<"-------------------------" << endl;

   for (int i=0; i<m_array_num_1; i++)

    {

       cout << m_array_1[i] <<" ";

    }

   cout << endl;

   for (int i=0; i<m_array_num_2; i++)

    {

       cout << m_array_2[i] <<" ";

    }

   cout << endl;

   for (int i=0; i<m_array_num_3; i++)

    {

       cout << m_array_3[i] <<" ";

    }

   cout << endl;

m_array_1 = NULL;

m_array_2 = NULL;

m_array_3 = NULL;

    free(m_array_1);

    free(m_array_2);

    free(m_array_3);

}

//直接插入排序且去重複

CTTTtemplate <typename T>

voidCT InsertSort(T * &pArray, int &n)

{

   int i,j;

    T temp;

   for(i=1; i<n; i++)

    {

       if(pArray[i] < pArray[i-1])

        {

            temp = pArray[i];

            j = i;

           while(temp < pArray[j-1] && j !=0)

            {

                pArray[j] = pArray[j-1];

                j--;

            }// end while j

            pArray[j] = temp;

        } // end if pArray[i] < pArray[i-1]

    } // end for i

    T * pArray_tmp =new T[n];

   int n_var = 0;

   for(int k=0; k<n-1; k++)

    {

       bool exchang = false;

       int m = 0;

       for(int p=k+1; p<n; p++)

        {

           if(pArray[k] == pArray[p])

            {

                exchang =true;

                m++;

            } // end if pArray[k] == pArray[p]

        } // end for p

       if(!exchang)

        {

            pArray_tmp[n_var++] = pArray[k];

        } // end if exchang left

       else

        {

            k = k + m -1;

        } // end if exchang right

    } // end for k

    pArray_tmp[n_var++] = pArray[n-1];

    n = n_var;

    pArray = pArray_tmp;

    pArray_tmp =NULL;

    free(pArray_tmp);

} // end InsertSort()

相關推薦

關於c++模板連線問題解決方法

這個是鄙人發表一篇論壇,剛結帖,由於沒有回覆次數,導致沒寫結貼總結,在這寫下結貼總結,也希望以後也出現此問題的朋友們知道怎麼處理: 論壇連結:http://bbs.csdn.net/topics/392016457#new_post 總結: 1、通過一樓的提示,我百度了一下

C++ - 模板(class template)友元(friend) 的 全部六種形式 程式碼

#include <iostream> #include <string> template <typename T> class Pal; //pal朋友,這裡模板類的前置宣告 class C { friend class Pal<C>;

C++中兩個互相引用的解決方法

轉載自  ---》 https://blog.csdn.net/xiqingnian/article/details/41214539一、問題描述現在有兩個類A和B需要定義,定義A的時候需要用到B,定義B的時候需要用到A。二、分析A和B的定義和呼叫都放在一個檔案中肯定是不可以

關於模板中,子無法訪問父成員問題的解決方法

問題: 今天研究資料結構,按著書敲程式碼,發現子類中直接呼叫父類成員居然無法通過編譯。 看了好久都沒發現問題,嘗試將父類private屬性改為public,發現也是不行。 解決辦法: 然後我想著用域作

c++模板template中的typename使用方法-超級棒

error 最終 all 函數 一段時間 inner 不同 spa n-n 轉載:https://blog.csdn.net/vanturman/article/details/80269081 如有問題請聯系我刪除; 目錄 起因 typename的常見用法

python基本數據對象方法

expand and sta start dex capi ack abs fcc string 1.strip str_test=‘ Larry ‘ v=str_te

IPv4中的A,B,C子網掩碼那些事

來看 了解 擁有 nbsp 開發 信息 alt 位或 其余 IP 地址的主要類型有五種 A B C D 和 E 一般 A B C 類地址更為常用 每類地址都是由 32 位或 4 個字節組成 A類地址: 在 A 類地址中第一個 8 位字節表示網絡部分 其余 3 個 8 位字節

WPF WebBrowser Memory Leak 問題臨時解決方法

exce step lose rpe quest 不同 程序啟動 round collect 首先介紹一下內存泄漏(Memory Leak)的概念,內存泄露是指程序中已動態分配的堆內存由於某種原因未釋放或者無法釋放,造成系統內存的浪費,導致程序運行速度減慢甚至系統崩潰等嚴重

postman設置環境變量,字段值經過json轉換後數值超過型上限的解決方法

補充 src 引號 解決辦法 超過 com mage 解決 過程 在使用Tests進行環境變量的設置時,遇到這麽一種情況,在返回的responseBody中的userId字段,字段返回的是數值類型,再經過json轉換之後,發現保存的值跟接口返回的值不一致;如下圖: 接口返回

C++模板

c++ 類模板 C++中,為了節省代碼,引入了函數模板這一概念。不僅函數有模板,類也有模板。現在先來寫一個類模板。template < typename T > class AAA { private: T t; public: void test_func ( c

python使用IP代理示例出錯解決方法

python 代理ip requests模塊 一、代碼示例# -*- coding:utf-8 -*- import requests header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64

CentOS 7安裝Samba 4.6 版本步驟錯誤解決方法

style chmod tab root 必須 共享文件夾 默認 mini div 首先通過這次教訓,讓我養成一個好習慣:備份 備份 備份 不管做什麽配置或者更改什麽東西之前先做好備份! 還有我本身的一個壞毛病:眼高手低! 工廠有一臺服務器,由以前的運維裝的S

python MySQLdb Windows下安裝教程問題解決方法

ram info hfile 工具 兩個 auth let devtools load 使用python訪問mysql,需要一系列安裝 linux下MySQLdb安裝見 Python MySQLdb在Linux下的快速安裝http://www.jb51.net/artic

高精度大數c++模板 很好用

details lean 代碼 sprintf printf span tdi 我只 tar 首先聲明這是大佬寫的,我只是記錄下,拿來學習。附上大佬的鏈接 : https://blog.csdn.net/code4101/article/details/2302052

Android 8.0 的部分坑對應解決方法

channel 資料 兼容 androi adb install 只需要 方法 tps 雖然 Android 9.0 都已經面世了,本篇文章寫的有點遲了。 但是遲到好過不到,因此基於此這邊還是記錄一下項目中遇到的 Android 8.0 的坑及對應解決方法。 每次系統

Windows 10:開機顯示C:WINDOWSsystem32configsystemprofileDesktop不可用 的解決方法

window 簡單的 src 重啟 fig 情況 png system32 截圖 今晨起來開機,開完機一看,彈出啦一個框框上面寫著“C:\WINDOWS\system32\config\systemprofile\Desktop不可用...” 當我

C++函式模板實現原理

    C++為我們提供了函式模板機制。所謂函式模板,實際上是建立一個通用函式,其函式型別和形參型別不具體指定,用一個虛擬的型別來代表。這個通用函式就稱為函式模板。     凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義

織夢後臺管理模板無法正常顯示模板檔案列表解決方法

首頁要確定網站後臺-系統-系統基本引數-站點設定-模板預設風格,填寫正確的,還有一個可能是有部分主機(linux)在使用php函式dir時讀取資料夾檔案列表無效,可能是空間商為了安全限制了。 我們可以換scandir來解決 開啟 /dede/templets/templets_default.htm

C++ 模板的成員函式程式碼筆記

#include <iostream> #include <cstring> using namespace std; template <class T> class Max4 { T a,b,c,d;

ADB 自動補全 offline 解決方法

補全問題: adb 在CMD 視窗下不能補全,試了xshell 也是不能補全,最後找到 cmder 是可以補全的 下載地址: http://cmder.net/    adb offline 問題: D:\Program Files\cmder_mini λ ad