未灭时间 发表于 2018-2-14 22:15:48

问一个用visual studio 2017实现模块化编程的问题

编译的时候出现了这种错误,在头文件里添加了#pragma once没有
#ifndef
#define
#endif
这个不会用,不知道要在ifndef和define填什么,而且试过随便填 结果实现代码所有的变量都报错了,

未灭时间 发表于 2018-2-14 22:16:22

ifndef和define的后面

未灭时间 发表于 2018-2-14 22:17:13

未灭时间 发表于 2018-2-14 22:16
ifndef和define的后面

添加了#pragma once没用

qq1242009750 发表于 2018-2-17 18:51:15

是不是定义宏的时候重名了{:10_256:}

人造人 发表于 2018-2-17 19:38:44

那三个cpp文件中都有些什么?

未灭时间 发表于 2018-2-24 14:32:37

人造人 发表于 2018-2-17 19:38
那三个cpp文件中都有些什么?

方法的实现

未灭时间 发表于 2018-2-24 14:35:43

qq1242009750 发表于 2018-2-17 18:51
是不是定义宏的时候重名了

三个cpp文件都有这些声明

人造人 发表于 2018-2-24 14:37:26

未灭时间 发表于 2018-2-24 14:35
三个cpp文件都有这些声明

如果可以,把代码发完整
包括 sakuya.h Human.cpp FileOperate.cpp Housemaid.cpp

未灭时间 发表于 2018-2-24 14:41:14

qq1242009750 发表于 2018-2-24 14:59:22

未灭时间 发表于 2018-2-24 14:41


加我 QQ:1242009750 把代码发给我

人造人 发表于 2018-2-24 15:47:34

未灭时间 发表于 2018-2-24 14:41


这么截图很不方便吧?
你截图不方便
我看图也不方便
所以
发代码
^_^

未灭时间 发表于 2018-2-24 15:51:19

#pragma once
#include<iostream>
#include<string>
#include<fstream>

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

        void interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght);
};
class FileOperate
{
public:
        FileOperate();
        ~FileOperate();
        int project();
        void OpenWriteIn();//打开可写入
        void OpenReadable();//打开可读

};
class Housemaid :public Human, public FileOperate//女仆类 继承了Human
{
public:
        int order();
        void sweep();
        void CookDinner();


};
//void FileOperate::OpenWriteIn()
//{
//
//        std::string filename;
//
//        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
//        std::cin >> filename;
//
//
//        std::ofstream out(filename, std::ios::app);
//        if (!out)
//        {
//                std::cout << "文件打开失败" << std::endl;
//        }
//        std::cout << "请输入您要写入的内容";
//        std::string content;//内容变量
//        std::cin >> content;
//        out << content;
//        out.close();
//        std::cout << "写入成功";
//        std::cin.ignore(100, '\n');
//        std::cout << "\n输入任何字符结束程序" << std::endl;
//        std::cin.get();
//}
//void FileOperate::OpenReadable()
//{
//        std::string filename;
//        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
//        std::cin >> filename;
//        std::ifstream in(filename, std::ios::in);
//        if (!in)
//        {
//                std::cout << "文件打开失败" << std::endl;
//        }
//        std::string content;//内容变量
//        while (in >> content)
//        {
//                std::cout << content;
//        }
//        in.close();
//        std::cin.ignore(100, '\n');
//        std::cout << "\n输入任何字符结束程序" << std::endl;
//        std::cin.get();
//
//
//}
//FileOperate::FileOperate()
//{
//}
//
//FileOperate::~FileOperate()
//{
//}

//int FileOperate::project()
//{
//        int i;//i为获取的判断变量
//        std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
//        std::cin >> i;
//        if (i == 1)
//        {
//                std::string filename;
//
//                //std::cin >> filename;
//                std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
//                //std::ofstream out(filename, std::ios::app);
//
//                if (!out)
//                {
//                        std::cout << "文件打开失败" << std::endl;
//                }
//                std::cout << "请输入您的日志\n";
//                std::string content;//内容变量
//                std::cin >> content;
//                out << "\n" << content;
//                out.close();
//                std::cout << "输入成功";
//                std::cin.ignore(100, '\n');
//                std::cout << "输入任何字符结束程序" << std::endl;
//                std::cin.get();
//        }
//        else if (i == 2)
//        {
//                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
//                std::cin >> i;
//                switch (i)
//                {
//                case 1:
//                        OpenReadable();
//                        break;
//                case 2:
//                        OpenWriteIn();
//                        break;
//                default:
//                        std::cout << "主人,您输入的不是一个有效的数字";
//                        break;
//                }
//
//        }
//        else
//        {
//                std::cout << "主人,您输入的不是一个有效的数字";
//        }
//        return 0;
//}

//void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
//{
//        std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
//}
//
//void Housemaid::sweep()
//{
//        std::cout << "即将开始打扫\n" << std::endl;
//}
//void Housemaid::CookDinner()
//{
//        std::cout << "即将开始做饭\n" << std::endl;
//}
//int Housemaid::order()
//{
//        int i;//i为接收到的指令存储的变量
//        std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
//        std::cin >> i;
//
//
//        switch (i)
//        {
//        case 1:sweep();
//                return 0;
//                break;
//        case 2:CookDinner();
//                return 0;
//                break;
//        case 3:project();
//                return 0;
//                break;
//        default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
//                order();
//                break;
//        }
//
//}
int main(void)
{
        Housemaid sakuya;
        sakuya.name = "咲夜";
        sakuya.height = 170;
        sakuya.age = 17;
        sakuya.welght = 80;
        sakuya.interact(sakuya.name, sakuya.age, sakuya.height, sakuya.welght);
        sakuya.order();

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

}

未灭时间 发表于 2018-2-24 15:53:23

#include "sakuya.h"
#include<iostream>
#include<string>
#include<fstream>
void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
{
        std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
}

未灭时间 发表于 2018-2-24 15:53:54


#include "sakuya.h"
#include<iostream>
#include<string>
#include<fstream>
FileOperate::FileOperate()
{
}

FileOperate::~FileOperate()
{
}
void FileOperate::OpenWriteIn()
{

        std::string filename;

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


        std::ofstream out(filename, std::ios::app);
        if (!out)
        {
                std::cout << "文件打开失败" << std::endl;
        }
        std::cout << "请输入您要写入的内容";
        std::string content;//内容变量
        std::cin >> content;
        out << content;
        out.close();
        std::cout << "写入成功";
        std::cin.ignore(100, '\n');
        std::cout << "\n输入任何字符结束程序" << std::endl;
        std::cin.get();
}
void FileOperate::OpenReadable()
{
        std::string filename;
        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
        std::cin >> filename;
        std::ifstream in(filename, std::ios::in);
        if (!in)
        {
                std::cout << "文件打开失败" << std::endl;
        }
        std::string content;//内容变量
        while (in >> content)
        {
                std::cout << content;
        }
        in.close();
        std::cin.ignore(100, '\n');
        std::cout << "\n输入任何字符结束程序" << std::endl;
        std::cin.get();


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

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

                if (!out)
                {
                        std::cout << "文件打开失败" << std::endl;
                }
                std::cout << "请输入您的日志\n";
                std::string content;//内容变量
                std::cin >> content;
                out << "\n" << content;
                out.close();
                std::cout << "输入成功";
                std::cin.ignore(100, '\n');
                std::cout << "输入任何字符结束程序" << std::endl;
                std::cin.get();
        }
        else if (i == 2)
        {
                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
                std::cin >> i;
                switch (i)
                {
                case 1:
                        OpenReadable();
                        break;
                case 2:
                        OpenWriteIn();
                        break;
                default:
                        std::cout << "主人,您输入的不是一个有效的数字";
                        break;
                }

        }
        else
        {
                std::cout << "主人,您输入的不是一个有效的数字";
        }
        return 0;
}

未灭时间 发表于 2018-2-24 15:54:29

#include<iostream>
#include<string>
#include<fstream>

#include "sakuya.h"

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


        switch (i)
        {
        case 1:sweep();
                return 0;
                break;
        case 2:CookDinner();
                return 0;
                break;
        case 3:project();
                return 0;
                break;
        default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
                order();
                break;
        }
        return 0;
}

人造人 发表于 2018-2-24 16:29:31

根据文件内容,我可以推测出

#pragma once
#include<iostream>
#include<string>
#include<fstream>

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

      void interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght);
};
class FileOperate
{
public:
      FileOperate();
      ~FileOperate();
      int project();
      void OpenWriteIn();//打开可写入
      void OpenReadable();//打开可读

};
class Housemaid :public Human, public FileOperate//女仆类 继承了Human
{
public:
      int order();
      void sweep();
      void CookDinner();


};
//void FileOperate::OpenWriteIn()
//{
//
//      std::string filename;
//
//      std::cout << "主人,请输入您要打开的文件地址" << std::endl;
//      std::cin >> filename;
//
//
//      std::ofstream out(filename, std::ios::app);
//      if (!out)
//      {
//                std::cout << "文件打开失败" << std::endl;
//      }
//      std::cout << "请输入您要写入的内容";
//      std::string content;//内容变量
//      std::cin >> content;
//      out << content;
//      out.close();
//      std::cout << "写入成功";
//      std::cin.ignore(100, '\n');
//      std::cout << "\n输入任何字符结束程序" << std::endl;
//      std::cin.get();
//}
//void FileOperate::OpenReadable()
//{
//      std::string filename;
//      std::cout << "主人,请输入您要打开的文件地址" << std::endl;
//      std::cin >> filename;
//      std::ifstream in(filename, std::ios::in);
//      if (!in)
//      {
//                std::cout << "文件打开失败" << std::endl;
//      }
//      std::string content;//内容变量
//      while (in >> content)
//      {
//                std::cout << content;
//      }
//      in.close();
//      std::cin.ignore(100, '\n');
//      std::cout << "\n输入任何字符结束程序" << std::endl;
//      std::cin.get();
//
//
//}
//FileOperate::FileOperate()
//{
//}
//
//FileOperate::~FileOperate()
//{
//}

//int FileOperate::project()
//{
//      int i;//i为获取的判断变量
//      std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
//      std::cin >> i;
//      if (i == 1)
//      {
//                std::string filename;
//
//                //std::cin >> filename;
//                std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
//                //std::ofstream out(filename, std::ios::app);
//
//                if (!out)
//                {
//                        std::cout << "文件打开失败" << std::endl;
//                }
//                std::cout << "请输入您的日志\n";
//                std::string content;//内容变量
//                std::cin >> content;
//                out << "\n" << content;
//                out.close();
//                std::cout << "输入成功";
//                std::cin.ignore(100, '\n');
//                std::cout << "输入任何字符结束程序" << std::endl;
//                std::cin.get();
//      }
//      else if (i == 2)
//      {
//                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
//                std::cin >> i;
//                switch (i)
//                {
//                case 1:
//                        OpenReadable();
//                        break;
//                case 2:
//                        OpenWriteIn();
//                        break;
//                default:
//                        std::cout << "主人,您输入的不是一个有效的数字";
//                        break;
//                }
//
//      }
//      else
//      {
//                std::cout << "主人,您输入的不是一个有效的数字";
//      }
//      return 0;
//}

//void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
//{
//      std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
//}
//
//void Housemaid::sweep()
//{
//      std::cout << "即将开始打扫\n" << std::endl;
//}
//void Housemaid::CookDinner()
//{
//      std::cout << "即将开始做饭\n" << std::endl;
//}
//int Housemaid::order()
//{
//      int i;//i为接收到的指令存储的变量
//      std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
//      std::cin >> i;
//
//
//      switch (i)
//      {
//      case 1:sweep();
//                return 0;
//                break;
//      case 2:CookDinner();
//                return 0;
//                break;
//      case 3:project();
//                return 0;
//                break;
//      default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
//                order();
//                break;
//      }
//
//}
int main(void)
{
      Housemaid sakuya;
      sakuya.name = "咲夜";
      sakuya.height = 170;
      sakuya.age = 17;
      sakuya.welght = 80;
      sakuya.interact(sakuya.name, sakuya.age, sakuya.height, sakuya.welght);
      sakuya.order();

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

}



这是 sakuya.h 的内容

其他的推起来不怎么样,还望告知
^_^

人造人 发表于 2018-2-24 16:30:34

还有,sakuya.h 中写main函数?
如果没有推错
^_^

人造人 发表于 2018-2-24 16:32:47

好吧,推出来了
不用告知了

人造人 发表于 2018-2-24 16:52:41

找到问题了,找到了好多,其他的就不说了,最主要的问题是你把main函数写在了 头文件中

人造人 发表于 2018-2-24 16:57:45

好吧,没有其他问题,就真的只是 你把main函数写在了 头文件中

页: [1] 2
查看完整版本: 问一个用visual studio 2017实现模块化编程的问题