編譯模板類出錯
『壹』 請教高手啊 成員模板編譯失敗
#include <iostream>
2 using namespace std;
3 template<class T>class test{
4 public:
5 test(T);
6 void fun(T );//聲明時候不需要再一次template
7 };
8 template<class T> test<T>::test(T t1){
9 }
10 template<class T>void test<T>::fun(T t1){//只需要一個template就夠了
11 }
12 int main(){
13 test<int> t1(100);
14 return 0;
15 }
『貳』 C++類模板定義VC編譯出錯
你再看看,可能你哪個字母寫錯叻,
因為我身邊沒有可以編程的機器,我也說不清楚,
過幾天再幫你看看
或者你是新書什麼的
V.C++是不支持新標準的
你可以試試visual studio 2008
『叄』 函數模板編譯出錯
//你有定義c么?
#include <cstdlib>
#include <iostream>
using namespace std;
template<typename Type>
Type max(Type a,Type b)
{
return a>b?a:b;
}
int main(int argc, char *argv[])
{
int x=4,y=6,z=0;
double a=4.33,b=3.14;
z=max(a,b);
cout<<
『肆』 C++模板類實例化,編譯器報錯
第一種方法意味著在使用模板的轉換文件中不但要包含模板聲明文件,還要包含模板定義文件。在上例中,就是第一個示例,在array.h中用行內函數定義了所有的成員函數。或者在main.cpp文件中也包含進array.cpp文件。這樣編譯器就能看到模板的聲明和定義,並由此生成array<int, 50>實例。這樣做的缺點是編譯文件會變得很大,顯然要降低編譯和鏈接速度。
第二種方法,通過顯式的模板實例化得到類型。最好將所有的顯式實例化過程安放在另外的文件中。在本例中,可以創建一個新文件templateinstantiations.cpp:
// templateinstantiations.cpp
#include "array.cpp"
template class array <int, 50>; // 顯式實例化
『伍』 ctex編譯論文模板出錯,報錯如下:
我發現將.tex的文件,也就是你要編譯的文件放入 \ctex\MiKTeX\miktex\bin\ 是可以編譯的,我今天也這折騰了好久,因為一直都編譯不了,我還找過在線編譯,但是在線的特別爛,還一直都說我的模板是錯的,。。。無語,結果編譯後可以出PDF,放心吧,這方法我才實踐過~~注意這個比如是在你安裝了完整的CTeX前提下哦!其他好像還有別的方法我只是試過沒什麼用
『陸』 C++編寫Screen類模板 編譯出錯syntax error : missing ';' before '<'
構造函數定義
Screen<hi,wid>::Screen<hi,wid>(const string& cont):cursor(0),height(hi),width(wid){...}
改為
Screen<hi,wid>::Screen(const string& cont):cursor(0),height(hi),width(wid){...}
試試
『柒』 使用自己定義的模板類編譯時的問題
根據你的描述,我認為出現問題的原因是把結構體放在類中。
在C++中,結構體類型(struct)的功能被擴展了,結構體中也可以包括成員函數,用以處理其包括的數據,使其具有封裝的特徵,具有類的特點。用struct聲明的結構體類型實際上也就是類,但和類class還是有一點區別:用struct聲明的類,如果對其成員不作private或bublic的聲明,系統將其默認為public ,如果想分別指定私有成員和公有成員,則應用private或public做顯示聲明;而用class定義的類,如果不作private或public聲明,系統將其成員默認為private
所以,在C++中,應將struct和class等同看待。由此,可以看出將結構體定義放在類中是不行的,實際就是將一個類的定義放在另外一個類的定義裡面了。
『捌』 C++模板友元的編譯錯誤
1、第三行 friend Stack<T>; 缺少類型修飾符,應修改為friend class Stack<T>;
2、第三行加上class之後,還會出現問題,編譯器不能識別標識符Stack<T>,這是因為Stack是模板類型,需要在Node模板定義前加上Stack模板聲明,也就是在第一行前面加上
template<class T> class Stack;
修正如下:
template<class Type> class Stack; // 1、加上Stack模板聲明
template<class T>
class Node
{ friend class Stack<T>; // 2、加上類型修飾符class
private:
T data;
Node<T> *link;
public:
Node(T item,Node<T>*p=NULL)
{
data=item;
link=p;
}
};
template<class T>
class Stack
{
public:
Stack(){top=0;}
~Stack();
Stack<T>&Push(T item);
Stack<T>&Pop();
void Print();
private:
Node<T> *top;
};
『玖』 C++函數模板編譯老出錯的問題
if(max<x[i])
max=x[i];
這兩句是x[i] 不是 a[i]
『拾』 模板類無法編譯通過,誰能幫我解釋
返回值前面加個 typename就可以,
這是為了告訴編譯器class_A<T>::struct_A是一種類型而不是類的成員變數
其實:
warning C4346: 「class_A<T>::struct_A」 : 依賴名稱不是類型
用「typename」為前綴來表示類型
編譯器說的非常明確了!
VS7.1上編譯通過!VS6.0不知道可不可以!
template <class T>
typename class_A<T>::struct_A* //---這里加個typename
class_A<T>::generate_new_struct_A_instance()
{
struct_A * new_instance = new struct_A;
new_instance->a = 1;
new_instance->b = 2;
return new_instance;
}
///
改成double 為什麼可以,我很長時間沒看模板了,具體我也不清楚!
我估計對於特化的函數是把它當作一般函數那樣編譯的!