内部オブジェクトがあるクラス実装する場合:(再)割り当て
std::vector<std::vector<bool>> a;
クラスはfalse
を割り当てるoperator[]
このオブジェクトを初期化します。我々は現在の状態を反映するために、このオブジェクトを更新プライベートメンバ関数の間に
for(auto i = 0; i < limit; ++i) {
for(auto j = 0; j < limit; ++j) {
a[i][j] = false;
}
}
、のようobject.x
とobject.y
はタイプint
であることに注意とnew_y
:
a[object.x][object.y] = false;
a[new_x][new_y] = true;
使用されているオブジェクトのクラスがある:
class object {
public:
object(): x(0), y(0) { }
int x;
int y;
};
はなぜコンパイラは、初期化を可能とするが、その後言うん:
error: expression is not assignable
私は少しを再割り当てしていたときにプライベートメンバ関数のベクトルで?
Object.hpp:コンパイルするために打ち鳴らすを使用
#ifndef OBJECT_HPP
#define OBJECT_HPP
class Object {
public:
Object(): x(0), y(0) {}
Object(int x, int y) : x(x), y(y) {}
int x;
int y;
};
#endif`
main.cppに
#include "Object.hpp"
#include <vector>
class Function {
public:
Function() : a(10, std::vector<bool>(10)) { }
void moveObjects() {
for(int i = 0; i < 10; ++i) {
editObjects(i,i);
}
}
private:
void editObjects(int new_x, int new_y) const {
a[new_x][new_y] = true;
}
std::vector<std::vector<bool>> a;
};
int main() {
Function f;
f.moveObjects();
}
がエラーを受信:
clang++-3.8 main.cpp -std=c++14
ここ
は最小完全検証例であります
あなたの 'object'クラスと呼び出し(新しい値を割り当てる場所)を見ることができますか?たぶん、「公的」に設定する必要があるものがありますか?そして問題が 'auto'を選んでいると思うなら、それを基本的な' int'に変更して試してみてください。 –
また、メンバー関数は 'const'ですか? –
基本的には、[mcve]を作成する必要があります –