- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C++ 类 classA,我在其中通过运算符 new
动态创建自定义类 classB 的对象实例。
我已经成功地完成了数百次;然而在这种情况下,新运算符返回一个 NULL 指针,即使我已经在构造函数中检查了 this
指针的值并且它返回一个非 null
指针。
我已经创建了一个类来复制一个重现错误的最小工作示例。但是,在这种情况下,运算符 new
会按预期工作。
据我了解,这肯定是内存分配失败导致的。
有没有人对如何解决此问题、从哪里开始或导致此错误的原因有何建议?
我很乐意发布我的全部代码,但我不想让任何人感到厌烦...
我希望有人能帮助我。
提前感谢您的时间!
更新:要求的代码为了您的方便,下面的方法发生了问题。变量_radice为NULL(赋值后不变)。
template <class T>
void AlberoNArio<T>::inserisciRadice(tipoElemento elemento)
{
_radice==new NodoAlberoNArioLista<T>();
cout<<endl<<_radice<<endl;
}
NodoAlberoNArioLista.h
#ifndef _NODO_ALBERO_N_ARIO_LISTA_H
#define _NODO_ALBERO_N_ARIO_LISTA_H
template <class T>
class NodoAlberoNArioLista
{
public:
typedef T tipoElemento;
typedef NodoAlberoNArioLista<T>* posizione;
tipoElemento _elemento;
posizione _padre;
NodoAlberoNArioLista();
NodoAlberoNArioLista(tipoElemento, posizione);
NodoAlberoNArioLista(NodoAlberoNArioLista<T>&);
NodoAlberoNArioLista<T>& operator=(NodoAlberoNArioLista<T>&);
static const posizione POSIZIONENULLA;
};
template <class T>
const typename NodoAlberoNArioLista<T>::posizione NodoAlberoNArioLista<T>::POSIZIONENULLA=0;
template<class T>
NodoAlberoNArioLista<T>::NodoAlberoNArioLista()
{_padre=0; cout<<endl<<endl<<endl<<this<<endl<<endl<<endl;}
template<class T>
NodoAlberoNArioLista<T>::NodoAlberoNArioLista(tipoElemento elemento, posizione padre)//==NULL) da modificare accordingly **LEO**
{
_elemento=elemento;
_padre=padre;
cout<<endl<<endl<<endl<<this<<endl<<endl<<endl;
}
template<class T>
NodoAlberoNArioLista<T>::NodoAlberoNArioLista(NodoAlberoNArioLista<T>& nodo)
{
_elemento=nodo._elemento;
}
template<class T>
NodoAlberoNArioLista<T>& NodoAlberoNArioLista<T>::operator=(NodoAlberoNArioLista<T>& nodo)
{
_elemento=nodo._elemento;
}
#endif
AlberoNArioAstratto.h
#ifndef _ALBERO_N_ARIO_ASTRATTO_H
#define _ALBERO_N_ARIO_ASTRATTO_H
#include <iostream>
#include<sstream>
#include <string>
using std::cout;
using std::istream;
using std::ostream;
using std::endl;
using std::string;
using std::istringstream;
template <class T, class P>
class AlberoNArioAstratto
{
public:
typedef T tipoElemento;
typedef P posizione;
virtual bool vuoto() const = 0;
virtual posizione radice() const = 0;
virtual void inserisciRadice(tipoElemento) = 0;
};
const string INIZIOFIGLITOKEN="[";
const string FINEFIGLITOKEN="]";
template <class T, class P>
istream &operator>>(istream &is, AlberoNArioAstratto<T,P>& alberoNArio)
{
typename AlberoNArioAstratto<T,P>::posizione tempPosizioneNodoAlbero;
string rigaElemento;
typename AlberoNArioAstratto<T,P>::tipoElemento tempElemento;
getline(is, rigaElemento);
istringstream iStringStream(rigaElemento);
iStringStream >> tempElemento;
alberoNArio.inserisciRadice(tempElemento);
tempPosizioneNodoAlbero=alberoNArio.radice();
getline(is, rigaElemento);
return is;
}
template <class T, class P>
ostream &operator<<(ostream &os, const AlberoNArioAstratto<T,P>& alberoNArio)
{
typename AlberoNArioAstratto<T,P>::posizione _tempRadice;
typename AlberoNArioAstratto<T,P>::posizione tempPosizioneNodoAlbero;
typename AlberoNArioAstratto<T,P>::tipoElemento tempElemento;
if (alberoNArio.vuoto()==true)
{return os;}
_tempRadice=alberoNArio.radice();
os<<tempElemento<<endl;
return os;
}
#endif
AlberoNArio.h
#ifndef _ALBERO_N_ARIO_LISTA_FIGLI_H
#define _ALBERO_N_ARIO_LISTA_FIGLI_H
#include "AlberoNArioAstratto.h"
#include "NodoAlberoNArioLista.h"
template <class T>
class AlberoNArio:public AlberoNArioAstratto<T, NodoAlberoNArioLista<T>* >
{
public:
typedef typename AlberoNArioAstratto<T, NodoAlberoNArioLista<T>* >::tipoElemento tipoElemento;
typedef typename AlberoNArioAstratto<T, NodoAlberoNArioLista<T>* >::posizione posizione;
AlberoNArio();
AlberoNArio(const AlberoNArio&);
~AlberoNArio();
void crea();
bool vuoto() const;
void inserisciRadice(tipoElemento);
posizione radice() const;
private:
static const posizione POSIZIONENULLA;
posizione _radice;
};
template <class T>
const typename AlberoNArio<T>::posizione AlberoNArio<T>::POSIZIONENULLA=NodoAlberoNArioLista<T>::POSIZIONENULLA;
//costruttori
template <class T>
AlberoNArio<T>::AlberoNArio()
{
crea();
}
template <class T>
AlberoNArio<T>::AlberoNArio(const AlberoNArio<T>& alberoNArio)
{
}
//distruttore
template <class T>
AlberoNArio<T>::~AlberoNArio()
{
}
template <class T>
void AlberoNArio<T>::crea()
{ _radice=POSIZIONENULLA; }
template <class T>
bool AlberoNArio<T>::vuoto() const
{ return (_radice==POSIZIONENULLA); }
template <class T>
void AlberoNArio<T>::inserisciRadice(tipoElemento elemento)
{
_radice==new NodoAlberoNArioLista<T>();//elemento,POSIZIONENULLA);
cout<<endl<<_radice<<endl;
}
template <class T>
typename AlberoNArio<T>::posizione AlberoNArio<T>::radice() const
{
return _radice;
}
#endif
main.cpp
#include <cstdlib>
#include <iostream>
#include "AlberoNArio.h"
#include <fstream>
using namespace std;
typedef AlberoNArio<int> AlberoGenealogico;
typedef AlberoGenealogico::posizione posizione;
int main(int argc, char *argv[])
{
AlberoGenealogico alberoGenealogico;
string fileAlberoGenealogico="Integers.txt";
ifstream filestreamAlberoGenealogico;
filestreamAlberoGenealogico.open(fileAlberoGenealogico.c_str(),ios::in);
if(!filestreamAlberoGenealogico)
{
cout << "Impossibile aprire il file "<<fileAlberoGenealogico<<"."; //<< argv[1] << " for reading.\n";
return (EXIT_FAILURE);
}
filestreamAlberoGenealogico>> alberoGenealogico;
cout<<endl<<alberoGenealogico<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Interger.txt 1个 2个 2个 3个 4个 5个 56
最佳答案
_radice==new NodoAlberoNArioLista<T>();
应该是
_radice=new NodoAlberoNArioLista<T>();
关于C++ 新运算符返回新的意外-Dev-cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023313/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在编码时,我问了自己这个问题: 这样更快吗: if(false) return true; else return false; 比这个? if(false) return true; return
如何在逻辑条件下进行“返回”? 在这样的情况下这会很有用 checkConfig() || return false; var iNeedThis=doSomething() || return fa
这是我的正则表达式 demo 如问题所述: 如果第一个数字是 1 则返回 1 但如果是 145 则返回 145 但如果是 133 则返回 133 样本数据a: K'8134567 K'81345678
在代码高尔夫问答部分查看谜题和答案时,我遇到了 this solution返回 1 的最长和最晦涩的方法 引用答案, int foo(void) { return! 0; } int bar(
我想在下面返回 JSON。 { "name": "jackie" } postman 给我错误。说明 Unexpected 'n' 这里是 Spring Boot 的新手。 1日龄。有没有正确的方法来
只要“is”返回 True,“==”不应该返回 True 吗? In [101]: np.NAN is np.nan is np.NaN Out[101]: True In [102]: np.NAN
我需要获取所有在 6 号或 7 号房间或根本不在任何房间的学生的详细信息。如果他们在其他房间,简单地说,我不希望有那个记录。 我的架构是: students(roll_no, name,class,.
我有一个表单,我将它发送到 php 以通过 ajax 插入到 mysql 数据库中。一切顺利,php 返回 "true" 值,但在 ajax 中它显示 false 消息。 在这里你可以查看php代码:
我在 Kotlin 中遇到了一个非常奇怪的无法解释的值比较问题,以下代码打印 假 data class Foo ( val a: Byte ) fun main() { val NUM
请注意,这并非特定于 Protractor。问题在于 Angular 2 的内置 Testability service Protractor 碰巧使用。 Protractor 调用 Testabil
在调试窗口中,以下表达式均返回 1。 Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & "
我在本地使用 jsonplaceholder ( http://jsonplaceholder.typicode.com/)。我正在通过 extjs rest 代理测试我的 GET 和 POST 调用
这是 Postman 为成功调用我的页面而提供的(修改后的)代码段。 var client = new RestClient("http://sub.example.com/wp-json/wp/v2
这个问题在这里已经有了答案: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must
我想我对 C 命令行参数有点生疏。我查看了我的一些旧代码,但无论这个版本是什么,都会出现段错误。 运行方式是 ./foo -n num(其中 num 是用户在命令行中输入的数字) 但不知何故它不起作用
我已经编写了一个类来处理命名管道连接,如果我创建了一个实例,关闭它,然后尝试创建另一个实例,调用 CreateFile() 返回 INVALID_HANDLE_VALUE,并且 GetLastErro
即使 is_writable() 返回 true,我也无法写入文件。当然,该文件存在并且显然是可读的。这是代码: $file = "data"; echo file_get_contents($fil
下面代码中的变量 $response 为 NULL,尽管它应该是 SOAP 请求的值。 (潮汐列表)。当我调用 $client->__getLastResponse() 时,我从 SOAP 服务获得了
我一直在网上的不同论坛上搜索答案,但似乎没有与我的情况相符的... 我正在使用 Windows 7,VS2010。 我有一个使用定时器来调用任务栏刷新功能的应用程序。在该任务栏函数中包含对 LoadI
我是一名优秀的程序员,十分优秀!