永发信息网

VC++错 类中的强制类型转换

答案:3  悬赏:0  手机版
解决时间 2021-02-06 15:34
  • 提问者网友:夢醒日落
  • 2021-02-06 11:22
呃~~好像每次都超过字数限制,我把代码发到博客上。。。程序不长,就是错误多。
http://neicole.blog.163.com/blog/static/357123272011415115728538/
用的是DEV-C++
错误看不出来,麻烦各位大侠帮帮忙....

编译器: Default compiler
执行 g++.exe...
g++.exe "F:\Temp\作业5\H5t2.cpp" -o "F:\Temp\作业5\H5t2.exe" -I"D:\Program Files (x86)\DEV-CPP\lib\gcc\mingw32\3.4.2\include" -I"D:\Program Files (x86)\DEV-CPP\include\c++\3.4.2\backward" -I"D:\Program Files (x86)\DEV-CPP\include\c++\3.4.2\mingw32" -I"D:\Program Files (x86)\DEV-CPP\include\c++\3.4.2" -I"D:\Program Files (x86)\DEV-CPP\include" -L"D:\Program Files (x86)\DEV-CPP\Lib"
In file included from D:/Program Files (x86)/DEV-CPP/include/c++/3.4.2/backward/iostream.h:31,

from F:\Temp\作业5\H5t2.cpp:11:
D:/Program Files (x86)/DEV-CPP/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the header for the header for C++ includes, or instead of the deprecated header . To disable this warning use -Wno-deprecated.
In file included from F:\Temp\作业5\H5t2.cpp:12:
F:\Temp\作业5\/nk.h:21: error: `operator double()' must be a nonstatic member function
F:\Temp\作业5\/nk.h:21: error: `operator double()' must take exactly one argument
F:\Temp\作业5\/nk.h:35: error: `operator double()' must be a nonstatic member function
F:\Temp\作业5\/nk.h:35: error: `operator double()' must take exactly one argument
F:\Temp\作业5\/nk.h: In function `operator double()':
F:\Temp\作业5\/nk.h:37: error: `meter' undeclared (first use this function)
F:\Temp\作业5\/nk.h:37: error: (Each undeclared identifier is reported only once for each function it appears in.)
F:\Temp\作业5\/nk.h:37: error: `kilometer' undeclared (first use this function)
F:\Temp\作业5\H5t2.cpp: In function `int main()':
F:\Temp\作业5\H5t2.cpp:25: error: missing terminating " character
F:\Temp\作业5\H5t2.cpp:26: error: expected primary-expression before '<<' token
F:\Temp\作业5\H5t2.cpp:42: error: `class nauticalmile_kilometer' used where a floating point value was expected
F:\Temp\作业5\H5t2.cpp:42: error: aggregate value used where a float was expected
F:\Temp\作业5\H5t2.cpp:43: error: `class nauticalmile_kilometer' used where a floating point value was expected
F:\Temp\作业5\H5t2.cpp:43: error: aggregate value used where a float was expected
F:\Temp\作业5\H5t2.cpp:44: error: `class nauticalmile_kilometer' used where a floating point value was expected
F:\Temp\作业5\H5t2.cpp:44: error: aggregate value used where a float was expected
F:\Temp\作业5\H5t2.cpp:45: error: `class nauticalmile_kilometer' used where a floating point value was expected
F:\Temp\作业5\H5t2.cpp:45: error: aggregate value used where a float was expected

执行结束

错在哪里,该怎么修改好呢?
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-02-06 11:38
F:\Temp\作业5\/nk.h:21: error: `operator double()' must be a nonstatic member function
必须是非静态的成员函数
F:\Temp\作业5\H5t2.cpp:25: error: missing terminating " character
缺引号? 看看有没有拉下,或是全角
全部回答
  • 1楼网友:掌灯师
  • 2021-02-06 13:35
从错误提示来看: operator double()缺少参数,使用了静态成员; kilometer、meter变量未定义,可能没有包含头文件; 存在语法错误:缺少'<<' 数据类型不匹配:aggregate value used where a float was expected(需要浮点数值时使用了聚合值) 初步估计这里出现问题最多: class nauticalmile_kilometer{}、operator double() 看了你的代码一下: double meter; double kilometer; 应该在public里头定义,而不是在private:里头定义,这样才能正常访问!private:是私有成员变量,不能在外部引用! 定义operator double()返回值 ========================================================================= 转换的时候建议使用format命令会比较好点~~~ int i; float i; ````` CString temp; temp.Format("%d,or%u,or%f,or%e,or%g,or%n,or%m,or%p,or%s,or%x or %",i); 或者: i = atoi(temp);   长整型(long) l = atol(temp);   浮点(double) d = atof(temp); 新手上路,希望对你有所帮助!
  • 2楼网友:孤独入客枕
  • 2021-02-06 12:26
楼主的输出写错了,应该是-6。 一般的整型变量位数都高于8位,比如vc里int是64位,但char型变量只有8位,那么把一个char型变量赋给一个int型变量时,高56位就根据char的符号位来填充,无符号或有符号的正数就补0,有符号的负数补1。 比如你给的程序signed char的取值范围实际上是-128-127。250对应的2进制数为不能有汉字啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯