Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menyelesaikan ralat kompilasi C++: 'penggunaan nama templat tidak sah tanpa senarai hujah'?

Bagaimana untuk menyelesaikan ralat kompilasi C++: 'penggunaan nama templat tidak sah tanpa senarai hujah'?

王林
Lepaskan: 2023-08-25 10:30:32
asal
2498 orang telah melayarinya

解决C++编译错误:'invalid use of template-name without an argument list',如何解决?

Selesaikan ralat kompilasi C++: 'penggunaan nama templat yang tidak sah tanpa senarai hujah', bagaimana untuk menyelesaikannya?

Dalam pengaturcaraan C++, kita sering menghadapi pelbagai ralat kompilasi. Salah satu ralat biasa ialah "penggunaan nama templat tidak sah tanpa senarai argumen". Ralat ini biasanya disebabkan oleh penggunaan nama templat yang salah. Artikel ini akan menerangkan punca ralat ini dan menyediakan beberapa penyelesaian.

Mula-mula, mari lihat contoh kod untuk mensimulasikan ralat ini:

template <typename T>
class MyClass {
public:
    void print(T value) {
        cout << value << endl;
    }
};

int main() {
    MyClass myObject;
    myObject.print(10);
    return 0;
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas templat MyClass, yang mempunyai fungsi ahli print() untuk mencetak nilai masuk. Dalam fungsi main(), kami mencipta objek MyClass myObject dan cuba memanggil fungsi print() untuk mencetak integer 10.

Walau bagaimanapun, apabila kami cuba menyusun kod ini, kami menemui mesej ralat berikut:

error: invalid use of template-name 'MyClass' without an argument list
Salin selepas log masuk

Sebab ralat ini ialah kami kehilangan parameter templat semasa mencipta objek myObject. Dalam C++, parameter templat mesti disediakan apabila kelas templat diwujudkan. Dalam kes ini, kita harus memberitahu pengkompil bahawa kita ingin membuat instantiate objek MyClass yang menerima jenis integer.

Untuk menyelesaikan ralat ini, kami perlu menyediakan parameter templat yang betul. Ubah suai kod di atas seperti berikut:

int main() {
    MyClass<int> myObject;
    myObject.print(10);
    return 0;
}
Salin selepas log masuk

Dengan menggunakan selepas MyClass, kami memberitahu pengkompil bahawa kami ingin membuat instantiate objek MyClass yang menerima jenis integer. Sekarang kami menyusun semula kod dan tidak lagi menghadapi ralat sebelumnya.

Selain itu, jika kami ingin mencipta objek MyClass yang menerima jenis lain, kami boleh menggunakan parameter templat seperti ini:

int main() {
    MyClass<double> myObject;
    myObject.print(3.14);
    return 0;
}
Salin selepas log masuk

Dalam kod ini, kami mencipta objek MyClass yang menerima jenis nombor titik terapung berketepatan dua, dan memanggil Its fungsi print() mencetak 3.14.

Untuk meringkaskan, ralat 'penggunaan nama templat yang tidak sah tanpa senarai argumen' disebabkan oleh tidak memberikan parameter templat yang betul apabila menggunakan kelas templat. Penyelesaian kepada ralat ini adalah dengan menyediakan parameter templat yang betul kepada kelas templat.

Semoga dengan penjelasan dan kod contoh di atas, anda boleh lebih memahami dan menyelesaikan ralat penyusunan biasa ini. Apabila menulis kod C++, jangan panik apabila anda menghadapi ralat ini, semak penggunaan templat yang berkaitan dengan teliti dan pastikan anda menyediakan parameter templat yang betul.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat kompilasi C++: 'penggunaan nama templat tidak sah tanpa senarai hujah'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan