㈠ 模板類無法編譯通過,誰能幫我解釋
返回值前面加個 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 為什麼可以,我很長時間沒看模板了,具體我也不清楚!
我估計對於特化的函數是把它當作一般函數那樣編譯的!
㈡ 【C】linux下find函數無法編譯
#include <algorithm>
用g++編譯
㈢ linux 下OpenCL代碼中已經寫了 include <CL/cl.h> 為什麼clGetPlatformIDs之類的函數仍不能編譯通過
編譯時報錯,未定義:
很有可能還需要其他頭文件,貼出具體抱錯信息來分析。
㈣ c語言小問題 幫忙看一下 答案是什麼
6.D 7.D 8.A 9.D 10.C
㈤ 水仙花數 C語言 定義函數 不能編譯
是main()不是mian()
㈥ dev c++不能編譯
hello.cppInfunction`intmain()':
解釋為:文件hello.cpp中main函數不能為int型,在基消不同的編譯器中,main函數的類型是不一樣的,你應該是搏慧知用的vc6吧,你把int換成void試試
hello.cpp`cout'undeclared(firstusethisfunction
解釋為:字元cout沒有定義,這個的錯誤時因為頭文件包含錯誤的問題,你把#include<iostream>改成#include<iostream.h>試試
hello.cpp`endl'undeclared(firstuse碧鉛thisfunction)
同第二點一樣,頭文件包含錯誤,把#include<iostream>改成#include<iostream.h>
㈦ C語言中的函數不可以單獨進行編譯。這句話為什麼不對
C語言中的函數可以單獨進行編譯,編譯為目標文件,要鏈接成可執行文件時,需要主函數以及庫。
㈧ 這個函數為什麼不能被編譯
vvoidbutler,多了個v,不是vvoid,是void
還有最開始的聲明voidbutler(void);,void與butler之間有個空格
後面的vvoidbutler(void);的那個分號不需要
#include<stdio.h>
voidbutler(void);
intmain(void)
{
printf(「Iwillsummonthebutlerfunction. 」);
butler();
printf(「Yes.BringmesometeaandwriteableCD-ROMS. 「);
return0;
}
voidbutler(void)
{
printf(「Yourang,sir? 「);
}
㈨ 這個函數定義為什麼不能過編譯
定義數組的時候不能用arr[n],中括弧裡面要是一個常數。題目中應該會告訴你數字最多有幾個,定義的時候用最大數。在函數中循環時再用n
㈩ TC 2.0 中clrsrc函數不能被編譯
或標簽) ,該連接器無法找到所有的圖書館和目標文件它的搜索。一般情況下,有兩個原因發生此錯誤:什麼代碼要求不存在(符號拼寫錯誤或使用了錯誤的情況下,例如) ,或要求的代碼錯誤的(您使用的是混合版本圖書館?一些從一個版本的產品,另一些從另一個版本) 。
無數種編碼和編譯錯誤可能會導致LNK2001 。有幾個具體原因下面列出,一些有聯系的更詳細的解釋。
編碼問題
不匹配的情況下在您的代碼或模塊定義( 。畫質)文件可能會導致LNK2001 。例如,如果您命名一個變數「 var1 」在一個C + +源文件,並嘗試使用它作為「 VAR1 」在另一個,你會收到此錯誤。解決辦法是完全匹配的情況下,文中所有提及。
一個項目,使用功能內嵌尚未確定了職能。 cpp文件,而不是在頭文件可能會導致LNK2001 。
如果您使用的是C + +中,請確保使用外部的「 C 」時調用C函數的C + +程序。通過使用外部的「 C 」您的使用武力的C命名約定。了解編譯器開關一樣/總蛋白或/鍀武力將文件編譯為一個C ( /技術合作)或C + + ( /總蛋白)檔案不管文件擴展名,或者您可能會得到不同的函數名比您預期的。
試圖參考功能或數據不具備的外部聯系的原因LNK2001 。 C + +中,內置的功能和構造數據內部的聯系,除非明確指定為外部。
丟失函數機構或變數會導致LNK2001 。剛剛一個函數原型或外部宣言將使編譯繼續,沒有錯誤,但鏈接將無法解決您的電話的地址或參考變數,因為沒有功能代碼或變數空間保留。
姓名裝修採用參數的函數進入最後裝飾功能名稱。調用一個函數的參數類型不匹配是在函數聲明可能會導致LNK2001 。
錯誤包括原型將導致編譯預期功能的機構,不提供。如果您同時擁有一類和非類執行函數F ,小心C + +的范圍內解決的規則。
當使用C + +中,一定要包括執行特定功能的一類,而不只是一個原型的類的定義。
試圖調用一個純虛函數的構造函數或析構函數的抽象基類將導致LNK2001因為按照定義一個純虛函數沒有基類執行。
全球唯一的函數和變數是公開的。
職能宣布與靜態修飾的定義文件的范圍。靜態變數具有相同的限制。試圖訪問任何靜態變數以外的文件,他們被宣布可能會導致出現一個編譯錯誤或LNK2001 。
一個變數的函數內宣布(一局部變數)只能使用范圍之內的這一職能。
C + +的全球靜態常量有聯系。這是不同於c.如果您嘗試使用全球不斷在C + +的多個文件你錯誤LNK2001 。一個辦法是包括常量初始化的一個頭文件,其中包括在您的頭。 cpp文件必要時,就好像它是一個函數原型。另一種辦法是使變數非恆定和使用時參考不斷評估它。