Noob di sini,
Saya mencoba mengkompilasi segmen kode ini dari 'Bahasa Pemrograman C++' Bjarne Stroustrup tetapi CodeBlocks terus memberi saya kesalahan ini.
Kode ini tentang pemeriksaan rentang array yang disimpan dalam fungsi vektor.
Ini kodenya:
#include <iostream>
#include <vector>
#include <array>
using namespace std;
int i = 1000;
template<class T> class Vec : public vector<T>
{
public:
Vec() : vector<T>() { }
T& operator[] (int i) {return at(i); }
const T& operator[] (int i) const {return at(i); }
//The at() operation is a vector subscript operation
//that throws an exception of type out_of_range
//if its argument is out of the vector's range.
};
Vec<Entry> phone_book(1000);
int main()
{
return 0;
}
Kesalahan yang dikembalikan adalah:
- tidak ada argumen 'at' yang bergantung pada parameter templat, jadi deklarasi 'at' harus tersedia
- catatan: (jika Anda menggunakan '-fpermissive', G++ akan menerima kode Anda, tetapi mengizinkan penggunaan nama yang tidak dideklarasikan tidak digunakan lagi
- Dalam fungsi anggota 'const T& operator[] (int i) const':
- tidak ada argumen 'at' yang bergantung pada parameter templat, jadi deklarasi 'at' harus tersedia
- 'Entri' tidak dideklarasikan dalam cakupan ini
- argumen templat 1 tidak valid
- ketik deklarasi sebelum token '(' tidak valid
Bisakah seseorang menjelaskan hal ini kepada saya?
Juga, bagaimana saya menerapkan ini jika saya tidak menggunakan 'using namespace std;'
std::
di depan setiap nama yang berasal darinamespace std
, mis. tulisstd::vector
di mana saja, ATAU tulisusing std::vector
sekali (Daripadanamespace
, cukup cantumkan semua nama yang Anda gunakan) - person MSalters   schedule 01.04.2015