鱼C论坛

 找回密码
 立即注册
查看: 2998|回复: 28

[已解决]问一个用visual studio 2017实现模块化编程的问题

[复制链接]
发表于 2018-2-14 22:15:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
捕获.PNG 捕获1.PNG 编译的时候出现了这种错误,在头文件里添加了#pragma once没有
#ifndef
#define
#endif
这个不会用,不知道要在ifndef和define填什么,而且试过随便填 结果实现代码所有的变量都报错了,
最佳答案
2018-2-24 16:57:45
好吧,没有其他问题,就真的只是 你把main函数写在了 头文件中

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-14 22:16:22 | 显示全部楼层
ifndef和define的后面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-14 22:17:13 | 显示全部楼层

添加了#pragma once没用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-17 18:51:15 | 显示全部楼层
是不是定义宏的时候重名了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-17 19:38:44 | 显示全部楼层
那三个cpp文件中都有些什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-24 14:32:37 | 显示全部楼层
人造人 发表于 2018-2-17 19:38
那三个cpp文件中都有些什么?

方法的实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-24 14:35:43 | 显示全部楼层
qq1242009750 发表于 2018-2-17 18:51
是不是定义宏的时候重名了

捕获.PNG 三个cpp文件都有这些声明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 14:37:26 | 显示全部楼层
未灭时间 发表于 2018-2-24 14:35
三个cpp文件都有这些声明

如果可以,把代码发完整
包括 sakuya.h Human.cpp FileOperate.cpp Housemaid.cpp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-24 14:41:14 | 显示全部楼层
捕获.PNG 捕获1.PNG 捕获2.PNG 捕获3.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 14:59:22 | 显示全部楼层

加我 QQ:1242009750 把代码发给我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 15:47:34 | 显示全部楼层

这么截图很不方便吧?
你截图不方便
我看图也不方便
所以
发代码
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-24 15:51:19 | 显示全部楼层
  1. #pragma once
  2. #include<iostream>
  3. #include<string>
  4. #include<fstream>

  5. class Human
  6. {
  7. public:
  8.         std::string name;
  9.         std::int32_t age;
  10.         std::float_t height;//因为不能用普通的float ,又查不到这几个float的用法,极可能出错。
  11.         std::float_t welght;//体重

  12.         void interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght);
  13. };
  14. class FileOperate
  15. {
  16. public:
  17.         FileOperate();
  18.         ~FileOperate();
  19.         int project();
  20.         void OpenWriteIn();//打开可写入
  21.         void OpenReadable();//打开可读

  22. };
  23. class Housemaid :public Human, public FileOperate//女仆类 继承了Human
  24. {
  25. public:
  26.         int order();
  27.         void sweep();
  28.         void CookDinner();


  29. };
  30. //void FileOperate::OpenWriteIn()
  31. //{
  32. //
  33. //        std::string filename;
  34. //
  35. //        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  36. //        std::cin >> filename;
  37. //
  38. //
  39. //        std::ofstream out(filename, std::ios::app);
  40. //        if (!out)
  41. //        {
  42. //                std::cout << "文件打开失败" << std::endl;
  43. //        }
  44. //        std::cout << "请输入您要写入的内容";
  45. //        std::string content;//内容变量
  46. //        std::cin >> content;
  47. //        out << content;
  48. //        out.close();
  49. //        std::cout << "写入成功";
  50. //        std::cin.ignore(100, '\n');
  51. //        std::cout << "\n输入任何字符结束程序" << std::endl;
  52. //        std::cin.get();
  53. //}
  54. //void FileOperate::OpenReadable()
  55. //{
  56. //        std::string filename;
  57. //        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  58. //        std::cin >> filename;
  59. //        std::ifstream in(filename, std::ios::in);
  60. //        if (!in)
  61. //        {
  62. //                std::cout << "文件打开失败" << std::endl;
  63. //        }
  64. //        std::string content;//内容变量
  65. //        while (in >> content)
  66. //        {
  67. //                std::cout << content;
  68. //        }
  69. //        in.close();
  70. //        std::cin.ignore(100, '\n');
  71. //        std::cout << "\n输入任何字符结束程序" << std::endl;
  72. //        std::cin.get();
  73. //
  74. //
  75. //}
  76. //FileOperate::FileOperate()
  77. //{
  78. //}
  79. //
  80. //FileOperate::~FileOperate()
  81. //{
  82. //}

  83. //int FileOperate::project()
  84. //{
  85. //        int i;//i为获取的判断变量
  86. //        std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
  87. //        std::cin >> i;
  88. //        if (i == 1)
  89. //        {
  90. //                std::string filename;
  91. //
  92. //                //std::cin >> filename;
  93. //                std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
  94. //                //std::ofstream out(filename, std::ios::app);
  95. //
  96. //                if (!out)
  97. //                {
  98. //                        std::cout << "文件打开失败" << std::endl;
  99. //                }
  100. //                std::cout << "请输入您的日志\n";
  101. //                std::string content;//内容变量
  102. //                std::cin >> content;
  103. //                out << "\n" << content;
  104. //                out.close();
  105. //                std::cout << "输入成功";
  106. //                std::cin.ignore(100, '\n');
  107. //                std::cout << "输入任何字符结束程序" << std::endl;
  108. //                std::cin.get();
  109. //        }
  110. //        else if (i == 2)
  111. //        {
  112. //                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
  113. //                std::cin >> i;
  114. //                switch (i)
  115. //                {
  116. //                case 1:
  117. //                        OpenReadable();
  118. //                        break;
  119. //                case 2:
  120. //                        OpenWriteIn();
  121. //                        break;
  122. //                default:
  123. //                        std::cout << "主人,您输入的不是一个有效的数字";
  124. //                        break;
  125. //                }
  126. //
  127. //        }
  128. //        else
  129. //        {
  130. //                std::cout << "主人,您输入的不是一个有效的数字";
  131. //        }
  132. //        return 0;
  133. //}

  134. //void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
  135. //{
  136. //        std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
  137. //}
  138. //
  139. //void Housemaid::sweep()
  140. //{
  141. //        std::cout << "即将开始打扫\n" << std::endl;
  142. //}
  143. //void Housemaid::CookDinner()
  144. //{
  145. //        std::cout << "即将开始做饭\n" << std::endl;
  146. //}
  147. //int Housemaid::order()
  148. //{
  149. //        int i;//i为接收到的指令存储的变量
  150. //        std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
  151. //        std::cin >> i;
  152. //
  153. //
  154. //        switch (i)
  155. //        {
  156. //        case 1:sweep();
  157. //                return 0;
  158. //                break;
  159. //        case 2:CookDinner();
  160. //                return 0;
  161. //                break;
  162. //        case 3:project();
  163. //                return 0;
  164. //                break;
  165. //        default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
  166. //                order();
  167. //                break;
  168. //        }
  169. //
  170. //}
  171. int main(void)
  172. {
  173.         Housemaid sakuya;
  174.         sakuya.name = "咲夜";
  175.         sakuya.height = 170;
  176.         sakuya.age = 17;
  177.         sakuya.welght = 80;
  178.         sakuya.interact(sakuya.name, sakuya.age, sakuya.height, sakuya.welght);
  179.         sakuya.order();

  180.         std::cin.ignore(100, '\n');
  181.         std::cout << "输入任何字符结束程序" << std::endl;
  182.         std::cin.get();
  183.         return 0;

  184. }

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-24 15:53:23 | 显示全部楼层
  1. #include "sakuya.h"
  2. #include<iostream>
  3. #include<string>
  4. #include<fstream>
  5. void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
  6. {
  7.         std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-24 15:53:54 | 显示全部楼层

  1. #include "sakuya.h"
  2. #include<iostream>
  3. #include<string>
  4. #include<fstream>
  5. FileOperate::FileOperate()
  6. {
  7. }

  8. FileOperate::~FileOperate()
  9. {
  10. }
  11. void FileOperate::OpenWriteIn()
  12. {

  13.         std::string filename;

  14.         std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  15.         std::cin >> filename;


  16.         std::ofstream out(filename, std::ios::app);
  17.         if (!out)
  18.         {
  19.                 std::cout << "文件打开失败" << std::endl;
  20.         }
  21.         std::cout << "请输入您要写入的内容";
  22.         std::string content;//内容变量
  23.         std::cin >> content;
  24.         out << content;
  25.         out.close();
  26.         std::cout << "写入成功";
  27.         std::cin.ignore(100, '\n');
  28.         std::cout << "\n输入任何字符结束程序" << std::endl;
  29.         std::cin.get();
  30. }
  31. void FileOperate::OpenReadable()
  32. {
  33.         std::string filename;
  34.         std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  35.         std::cin >> filename;
  36.         std::ifstream in(filename, std::ios::in);
  37.         if (!in)
  38.         {
  39.                 std::cout << "文件打开失败" << std::endl;
  40.         }
  41.         std::string content;//内容变量
  42.         while (in >> content)
  43.         {
  44.                 std::cout << content;
  45.         }
  46.         in.close();
  47.         std::cin.ignore(100, '\n');
  48.         std::cout << "\n输入任何字符结束程序" << std::endl;
  49.         std::cin.get();


  50. }
  51. int FileOperate::project()
  52. {
  53.         int i;//i为获取的判断变量
  54.         std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
  55.         std::cin >> i;
  56.         if (i == 1)
  57.         {
  58.                 std::string filename;

  59.                 //std::cin >> filename;
  60.                 std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
  61.                 //std::ofstream out(filename, std::ios::app);

  62.                 if (!out)
  63.                 {
  64.                         std::cout << "文件打开失败" << std::endl;
  65.                 }
  66.                 std::cout << "请输入您的日志\n";
  67.                 std::string content;//内容变量
  68.                 std::cin >> content;
  69.                 out << "\n" << content;
  70.                 out.close();
  71.                 std::cout << "输入成功";
  72.                 std::cin.ignore(100, '\n');
  73.                 std::cout << "输入任何字符结束程序" << std::endl;
  74.                 std::cin.get();
  75.         }
  76.         else if (i == 2)
  77.         {
  78.                 std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
  79.                 std::cin >> i;
  80.                 switch (i)
  81.                 {
  82.                 case 1:
  83.                         OpenReadable();
  84.                         break;
  85.                 case 2:
  86.                         OpenWriteIn();
  87.                         break;
  88.                 default:
  89.                         std::cout << "主人,您输入的不是一个有效的数字";
  90.                         break;
  91.                 }

  92.         }
  93.         else
  94.         {
  95.                 std::cout << "主人,您输入的不是一个有效的数字";
  96.         }
  97.         return 0;
  98. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-24 15:54:29 | 显示全部楼层
  1. #include<iostream>
  2. #include<string>
  3. #include<fstream>

  4. #include "sakuya.h"

  5. void Housemaid::sweep()
  6. {
  7.         std::cout << "即将开始打扫\n" << std::endl;
  8. }
  9. void Housemaid::CookDinner()
  10. {
  11.         std::cout << "即将开始做饭\n" << std::endl;
  12. }
  13. int Housemaid::order()
  14. {
  15.         int i;//i为接收到的指令存储的变量
  16.         std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
  17.         std::cin >> i;


  18.         switch (i)
  19.         {
  20.         case 1:sweep();
  21.                 return 0;
  22.                 break;
  23.         case 2:CookDinner();
  24.                 return 0;
  25.                 break;
  26.         case 3:project();
  27.                 return 0;
  28.                 break;
  29.         default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
  30.                 order();
  31.                 break;
  32.         }
  33.         return 0;
  34. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 16:29:31 | 显示全部楼层
根据文件内容,我可以推测出

  1. #pragma once
  2. #include<iostream>
  3. #include<string>
  4. #include<fstream>

  5. class Human
  6. {
  7. public:
  8.         std::string name;
  9.         std::int32_t age;
  10.         std::float_t height;//因为不能用普通的float ,又查不到这几个float的用法,极可能出错。
  11.         std::float_t welght;//体重

  12.         void interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght);
  13. };
  14. class FileOperate
  15. {
  16. public:
  17.         FileOperate();
  18.         ~FileOperate();
  19.         int project();
  20.         void OpenWriteIn();//打开可写入
  21.         void OpenReadable();//打开可读

  22. };
  23. class Housemaid :public Human, public FileOperate//女仆类 继承了Human
  24. {
  25. public:
  26.         int order();
  27.         void sweep();
  28.         void CookDinner();


  29. };
  30. //void FileOperate::OpenWriteIn()
  31. //{
  32. //
  33. //        std::string filename;
  34. //
  35. //        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  36. //        std::cin >> filename;
  37. //
  38. //
  39. //        std::ofstream out(filename, std::ios::app);
  40. //        if (!out)
  41. //        {
  42. //                std::cout << "文件打开失败" << std::endl;
  43. //        }
  44. //        std::cout << "请输入您要写入的内容";
  45. //        std::string content;//内容变量
  46. //        std::cin >> content;
  47. //        out << content;
  48. //        out.close();
  49. //        std::cout << "写入成功";
  50. //        std::cin.ignore(100, '\n');
  51. //        std::cout << "\n输入任何字符结束程序" << std::endl;
  52. //        std::cin.get();
  53. //}
  54. //void FileOperate::OpenReadable()
  55. //{
  56. //        std::string filename;
  57. //        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  58. //        std::cin >> filename;
  59. //        std::ifstream in(filename, std::ios::in);
  60. //        if (!in)
  61. //        {
  62. //                std::cout << "文件打开失败" << std::endl;
  63. //        }
  64. //        std::string content;//内容变量
  65. //        while (in >> content)
  66. //        {
  67. //                std::cout << content;
  68. //        }
  69. //        in.close();
  70. //        std::cin.ignore(100, '\n');
  71. //        std::cout << "\n输入任何字符结束程序" << std::endl;
  72. //        std::cin.get();
  73. //
  74. //
  75. //}
  76. //FileOperate::FileOperate()
  77. //{
  78. //}
  79. //
  80. //FileOperate::~FileOperate()
  81. //{
  82. //}

  83. //int FileOperate::project()
  84. //{
  85. //        int i;//i为获取的判断变量
  86. //        std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
  87. //        std::cin >> i;
  88. //        if (i == 1)
  89. //        {
  90. //                std::string filename;
  91. //
  92. //                //std::cin >> filename;
  93. //                std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
  94. //                //std::ofstream out(filename, std::ios::app);
  95. //
  96. //                if (!out)
  97. //                {
  98. //                        std::cout << "文件打开失败" << std::endl;
  99. //                }
  100. //                std::cout << "请输入您的日志\n";
  101. //                std::string content;//内容变量
  102. //                std::cin >> content;
  103. //                out << "\n" << content;
  104. //                out.close();
  105. //                std::cout << "输入成功";
  106. //                std::cin.ignore(100, '\n');
  107. //                std::cout << "输入任何字符结束程序" << std::endl;
  108. //                std::cin.get();
  109. //        }
  110. //        else if (i == 2)
  111. //        {
  112. //                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
  113. //                std::cin >> i;
  114. //                switch (i)
  115. //                {
  116. //                case 1:
  117. //                        OpenReadable();
  118. //                        break;
  119. //                case 2:
  120. //                        OpenWriteIn();
  121. //                        break;
  122. //                default:
  123. //                        std::cout << "主人,您输入的不是一个有效的数字";
  124. //                        break;
  125. //                }
  126. //
  127. //        }
  128. //        else
  129. //        {
  130. //                std::cout << "主人,您输入的不是一个有效的数字";
  131. //        }
  132. //        return 0;
  133. //}

  134. //void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
  135. //{
  136. //        std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
  137. //}
  138. //
  139. //void Housemaid::sweep()
  140. //{
  141. //        std::cout << "即将开始打扫\n" << std::endl;
  142. //}
  143. //void Housemaid::CookDinner()
  144. //{
  145. //        std::cout << "即将开始做饭\n" << std::endl;
  146. //}
  147. //int Housemaid::order()
  148. //{
  149. //        int i;//i为接收到的指令存储的变量
  150. //        std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
  151. //        std::cin >> i;
  152. //
  153. //
  154. //        switch (i)
  155. //        {
  156. //        case 1:sweep();
  157. //                return 0;
  158. //                break;
  159. //        case 2:CookDinner();
  160. //                return 0;
  161. //                break;
  162. //        case 3:project();
  163. //                return 0;
  164. //                break;
  165. //        default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
  166. //                order();
  167. //                break;
  168. //        }
  169. //
  170. //}
  171. int main(void)
  172. {
  173.         Housemaid sakuya;
  174.         sakuya.name = "咲夜";
  175.         sakuya.height = 170;
  176.         sakuya.age = 17;
  177.         sakuya.welght = 80;
  178.         sakuya.interact(sakuya.name, sakuya.age, sakuya.height, sakuya.welght);
  179.         sakuya.order();

  180.         std::cin.ignore(100, '\n');
  181.         std::cout << "输入任何字符结束程序" << std::endl;
  182.         std::cin.get();
  183.         return 0;

  184. }

复制代码


这是 sakuya.h 的内容

其他的推起来不怎么样,还望告知
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 16:30:34 | 显示全部楼层
还有,sakuya.h 中写main函数?
如果没有推错
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 16:32:47 | 显示全部楼层
好吧,推出来了
不用告知了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 16:52:41 | 显示全部楼层
找到问题了,找到了好多,其他的就不说了,最主要的问题是你把main函数写在了 头文件中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 16:57:45 | 显示全部楼层    本楼为最佳答案   
好吧,没有其他问题,就真的只是 你把main函数写在了 头文件中

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 20:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表