2 u012662731 u012662731 于 2016.02.26 12:43 提问

C++成员函数前加类型,在g++下的编译错误,在vs2012下编译通过,什么原因
c++

abc.cpp
#include
using namespace std;
class MY
{
public:
void MY::print()
{
cout<<"sdjflsdj"<<endl;
}

};
int _tmain(int argc, _TCHAR* argv[])
{
MY my;

my.print();

return 0;

}
g++ abc.cpp
abc.cpp:9: error: extra qualification ‘MY::’ on member ‘print’
去掉MY::编译通过

4个回答

zuishikonghuan
zuishikonghuan   2016.02.26 21:36
已采纳

1。有可能是g++不支持
2。编译时加上-std=...指定用什么标准试试

caozhy
caozhy   Ds   Rxr 2016.02.26 12:45

public:
void MY::print()
gcc不支持这个写法
修改为
public:
void print()

oyljerry
oyljerry   Ds   Rxr 2016.02.26 13:22

不同编译器语法支持有一些区别。你可以去掉MY,然后来支持g++

John_ToStr
John_ToStr   Rxr 2016.02.26 16:02

这只能说明visual stdio 高版本要比GCC牛逼得多, 因为他考虑问题更为全面, 这就是个活生生的例子...

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在VS2012中编译C语言程序
最近看到了一些传智播客的C语言教程,令我感到奇怪的是既然不用VC6.0,而是用 VS2010或者VS2013编译C程序,以前只知道VS2010或者VS2013只能编译C#程序,我也用了一下子VS2013编译C语言 第一步:打开VS2013 打开VS2013后显示的界面 等一会儿后会显示VS2013主界面: VS2013主界面 第二步 选择新建项目:
在VS2012中创建一个MFC动态链接项目(.dll)后,编译出现一大堆莫名其妙的错误的解决方法
今天在做一个简单的读取文件的接口界面的时候,用VS2012新建了一个.dl lMFC项目,编写好代码无任何错误后,编译链接,结果这时问题出现了:本来好好的代码却出现一大堆乱七八糟的错误:error C2146: 语法错误: 缺少“;”(在标识符“HwndMSWheel”的前面) 等等一系列莫名其妙的错误!之后我又把相同的代码移植到VS2013中来测试,结果没有问题(MFC了解比较浅,至今不解为何出
duilib编译错误解决方法整理 (含VS2013)
此文转载,原文:http://blog.csdn.net/x356982611/article/details/30217473 @1:找不到Riched20.lib 用everything等软件搜索下磁盘,找到所在的目录添加到vs的库目录即可,我得是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;其他的vs版
vs2012出现的几个常见的编译错误
1, 错误    397    Task could not find "sgen.exe" using the SdkToolsPath "" or the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86". Make sure th
C++函数编译原理和成员函数的实现
转载自:http://c.biancheng.net/cpp/biancheng/view/2996.html点击打开链接 从上节的例子可以看出,对象的内存模型中只保留了成员变量,除此之外没有任何其他信息,程序运行时不知道 obj 的类型为 Demo,也不知道它还有一个成员函数 display()。那么,究竟是如何通过对象调用成员函数的呢? C++函数的编译 C++和C语言的编译方式不同
C语言,C++常见编译错误
fatal error C1003:  error count exceeds number; stopping compilation 中文对照:错误太多,停止编译 分析:修改之前的错误,再次编译     fatal  error  C1004: unexpected end of file found 中文对照:文件未结束   分析:一个函数或者一个结构定义缺少“}”、或者在
Cmake编译出错
CMake使用Visual Studio 14 2015 Win64编译报错: The C compiler identification is unknown The CXX compiler identification is unknown CMake Error at CMakeLists.txt:5 (project): No CMAKE_C_COMPILER coul
为什么调试的时候需要编译选项中添加 -g
gcc -g
poj上 G++ GCC C++编译器的区别?
Linux 中最重要的软件开发工具是 GCC。GCC 是 GNU 的 C 和 C++ 编译器。实际上,GCC 能够编译三种语言:C、C++ 和 Object C(C 语言的一种面向对象扩展)。利用 gcc 命令可同时编译并连接 C 和 C++ 源程序。 GCC 可同时用来编译 C 程序和 C++ 程序。一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是 C++ 程序。在 Linux 中
成员变量前请加上this
    以前写代码总是觉得在成员变量前请加上this或者在成员函数前加上this太麻烦。但是当我们在类中声明了一个函数,可能是实例的成员函数,可能是类的方法。接着进行定义这个方法时,通常都是通过拷贝过去,很少有人会在定义的时候重新把这个方法敲一遍。问题常常处在我们想偷懒的地方,拷贝过去后,通常会忘记在这个方法前添加这个类的名字,这个函数里面如果有用到成员属性,那么在链接时出错提示,找不到某某变量,