鱼C论坛

 找回密码
 立即注册
查看: 3283|回复: 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 | 显示全部楼层
#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;

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

使用道具 举报

 楼主| 发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 的内容

其他的推起来不怎么样,还望告知
^_^
想知道小甲鱼最近在做啥?请访问 -> 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-11-6 07:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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