当前位置: 技术问答>linux和unix
g++ 一个简单的问题
来源: 互联网 发布时间:2015-09-16
本文导语: 本人刚学 g++ 写了个这样的程序 编译不通过 // String.h: interface for the String class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_STRING_H__F53E2E25_93A6_4A7A_B878_15521F33B4BF__INCLUDED_) #define AFX_STRING_...
本人刚学 g++
写了个这样的程序 编译不通过
// String.h: interface for the String class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_STRING_H__F53E2E25_93A6_4A7A_B878_15521F33B4BF__INCLUDED_)
#define AFX_STRING_H__F53E2E25_93A6_4A7A_B878_15521F33B4BF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class String
{
public:
String & operator =(String &s1);
String operator+(String &s2);
String();
virtual ~String();
private:
char * m_data;
};
#endif // !defined(AFX_STRING_H__F53E2E25_93A6_4A7A_B878_15521F33B4BF__INCLUDED_)
// String.cpp: implementation of the String class.
//
//////////////////////////////////////////////////////////////////////
#include "String.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
String::String()
{
m_data = new char[100];
}
String::~String()
{
delete []m_data;
}
String String::operator +(String &s2)
{
String temp;
return temp;
}
String & String::operator =(String &s1)
{
if(this == &s1)
return *this;
delete []m_data;
m_data = new char[100];
return *this;
}
// test.cpp
//
#include "String.h"
int main()
{
int x,y,sum;
String str1,str2,temp;
temp = str1 +(str2); // test.cpp:9: error: no match for 'operator=' in 'temp = String::operator+(String&
)(((String&)(&str2)))'
return 0;
}
很简单就一个 String 类 有 = ,+方法
可是编译却说上面那一行有错误!
请精通 g++ 的高手指点一二。
我在 vc 里就可以通过,但是运行的时候有程序崩溃
写了个这样的程序 编译不通过
// String.h: interface for the String class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_STRING_H__F53E2E25_93A6_4A7A_B878_15521F33B4BF__INCLUDED_)
#define AFX_STRING_H__F53E2E25_93A6_4A7A_B878_15521F33B4BF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class String
{
public:
String & operator =(String &s1);
String operator+(String &s2);
String();
virtual ~String();
private:
char * m_data;
};
#endif // !defined(AFX_STRING_H__F53E2E25_93A6_4A7A_B878_15521F33B4BF__INCLUDED_)
// String.cpp: implementation of the String class.
//
//////////////////////////////////////////////////////////////////////
#include "String.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
String::String()
{
m_data = new char[100];
}
String::~String()
{
delete []m_data;
}
String String::operator +(String &s2)
{
String temp;
return temp;
}
String & String::operator =(String &s1)
{
if(this == &s1)
return *this;
delete []m_data;
m_data = new char[100];
return *this;
}
// test.cpp
//
#include "String.h"
int main()
{
int x,y,sum;
String str1,str2,temp;
temp = str1 +(str2); // test.cpp:9: error: no match for 'operator=' in 'temp = String::operator+(String&
)(((String&)(&str2)))'
return 0;
}
很简单就一个 String 类 有 = ,+方法
可是编译却说上面那一行有错误!
请精通 g++ 的高手指点一二。
我在 vc 里就可以通过,但是运行的时候有程序崩溃
|
晕g++不是一门语言
是GNU的C++编译器
上面程序的编译错误在于String&引用的使用错误
只要将所有的引用String&改为String即可
另外程序运行出错的问题在于
1str1,str2没有初始化数据
2重载运算符operator+,operator=定义时程序书写不完整
没完成相应操作
是GNU的C++编译器
上面程序的编译错误在于String&引用的使用错误
只要将所有的引用String&改为String即可
另外程序运行出错的问题在于
1str1,str2没有初始化数据
2重载运算符operator+,operator=定义时程序书写不完整
没完成相应操作
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。