ich versuche dem buch zu folgen Datenstrukturen und problemlösung mit C++, von weiss.eine konstante referenz in C++ implementieren (nach dem weiss-buch)
Ich versuche, auf konstante Referenzklasse zu arbeiten, so wie das Buch sagt, aber es hält mich kompilieren Fehler.
Update: Ich habe den Code geändert, aber einige der alten Fehler bestehen weiterhin.
//Class that wraps a constant reference variable.
//useful for return values from a container find method.
#include <iostream>
using namespace std;
class NullPointerException: public exception{
};
template <class Object>
class Cref{
public:
Cref() : obj(NULL){}
explicit Cref(const Object & x): obj(&x){ }
const Object & get() const{
if(isNull()){
throw NullPointerException();
}
else{
return *obj;
}
}
bool isNull() const{
return obj == NULL;
}
private:
const Object* obj; //stores a pointer...
};
// Anwendungsbeispiel:
Klasse Testclass { int-Test;
public:
TestClass():test(10){}
int& get(bool valid){
if(valid){
Cref<int> retv(test);
return retv;
}
else{
Cref<int> retv;
return retv;
}
}
};
int main(){
TestClass temp;
try{
Cref<int> test = temp.get(true);
Cref<int> test2 = temp.get(false);
}
catch(exception& e){
cout<<"NULL pointer exception occurred"<<endl;
}
}
3_ConstRef.cpp: In member function ‘int& TestClass::get(bool)’:
3_ConstRef.cpp:44:12: error: invalid initialization of reference of type ‘int&’ from expression of type ‘Cref<int>’
3_ConstRef.cpp:48:12: error: invalid initialization of reference of type ‘int&’ from expression of type ‘Cref<int>’
3_ConstRef.cpp: In function ‘int main()’:
3_ConstRef.cpp:59:33: error: conversion from ‘int’ to non-scalar type ‘Cref<int>’ requested
3_ConstRef.cpp:60:35: error: conversion from ‘int’ to non-scalar type ‘Cref<int>’ request
ed
Wie löse ich diese Probleme? (ps:? Ist es wegen der falschen Umsetzung oder der falschen Verwendung)
Danke:)
Was ist die 'NullPointerException' Definition? Wir wissen es nicht. Und Sie haben keinen Header eingefügt, der es enthalten könnte. – jweyrich
... Ich dachte, es wäre ein C++ - Schlüsselwort, wenn mein Gedit es gefärbt hat ... also muss ich es selbst definieren ??? oder muss ich mehr Header-Dateien hinzufügen? – user269334
oh es tut mir leid, es war nicht (und die Färbung ist nicht passiert) Ich denke, ich muss es selbst implementieren – user269334