Örnek değişken olarak std::vector<int>
olan bir sınıf tasarlıyorum. Boyutu std::vector
kullanıyorum çünkü çalışma zamanında boyutunu ayarlamanız gerekiyor. İşte benim kod ilgili kısımları şunlardır:Kurulum std :: vektörü, sınıf yapıcısı
my_class.h:
#include <vector>
using std::vector;
class MyClass {
int size;
vector<int> vec;
}
my_class.cc:
#include "my_class.h"
using std::vector
MyClass::MyClass(int m_size) : size(m_size) {
vec = new vector<int>(size,0);
}
ben bu hata iletileri almak derlemek girişiminde:
vector<int> temp(size,0);
vec = temp;
: Ben kusurlu hattı değiştirdiğinizde, Ancak
g++ -c -Wall my_class.cc -o my_class.o
my_class.cc: In constructor ‘MyClass::MyClass(int):
my_class.cc:4 error: no match for ‘operator=’ in ‘((MyClass*)this)->My_Class::vec = ((*(const allocator_type*)(& std::allocator<int>())), (operator new(24u), (<statement>, ((std::vector<int>*)<anonymous>))))’
make: *** [my_class.o] Error 1
Artık bir aksama olmadan derleniyor ve istenen davranışı alıyorum ve vektörüme
vec[i] // i having been defined as an int yada yada yada
Bu geçici çözüm tamam, ancak neden çalıştığını ve ilk yöntemin başarısız olduğunu anlamak isterim. Şimdiden teşekkürler.
'yeni vector' size üye değişkeni atamak edebilmek için değil, bir değer, bir işaretçi döndürür' – Chethan
Eğer Java Benim tahminim gelmek olduğunu veya C# ve eğer öyleyse, benim ciddi tavsiyem vec' Önce iyi, giriş C++ kitabı almak için. –
Ve her zaman kopyasını kopyala + yapıştır yöntemiyle gönderin. Gönderdiğiniz kod eksik –