私はもっと複雑なのproyectため、このサンドボックスコードを持って上書きすることなく、C++でのポインタの値を保存することができます方法:あなたはそれが
#include <sstream>
#include <iostream>
#include <vector>
using namespace std;
class Table
{
friend class Variable;
public:
Variable * variables[1021];
};
class Variable
{
friend class Nodo;
public:
char clas;
Nodo * ini;
};
class Nodo
{
public:
char clas;
Variable * father;
private:
float * value;
public:
Nodo();
void set_value(float);
float * get_value();
};
Nodo::Nodo()
{
clas = ' ';
father = NULL;
value = NULL;
}
void Nodo::set_value(float m)
{
float * r = new float();
r = &m;
value = (float *)r;
}
float * Nodo::get_value()
{
return this->value;
}
をそしてこれがメインです:
void main()
{
Nodo * n = new Nodo(); // OK.
n->set_value(5.3442); // Ok.
Variable * v = new Variable(); // This is the problem.
// When I declare another pointer an initilized it, n lost the value stored in value.
Variable * v0 = new Variable(); // Here the same.
v->ini = n;
n->father = v;
Table * t = new Table();
t->variables[0] = v;
v0 = t->variables[0];
cout << *(static_cast<float *>(v0->ini->get_value())) << endl;
}
どのように私は変更なしでポインタの値を在庫できますか?私はconstなどを使うべきだと思われますが、私はどのようにしているのか分かりません。フィールド値をプライベートとして宣言することは役に立ちません。アイデアは、後でボイド*と置き換えて、基本データの任意のキングを格納するだけでなく、データを浮動させることです。
ありがとうございます!
申し訳ありませんが、あなたの問題が何であるかはわかりません。 'Variable * v = new Variable();で何が問題になっていますか? '? – NathanOliver
'void main()'は間違っていて、私はそのポインタビジネスの理由を見ることができません。良いC++の本を読むべきです。 –
C++はJavaではありません。あなたはそれらの新しいものすべてを必要としません。 –