小编Fra*_*Boi的帖子

C++"虚函数但没有虚拟析构函数"

我有一个基类Media和几个派生类,即DVD,Book等...的基类写为:

class Media{
    private:
        int id;
        string title;
        int year;
    public:
        Media(){ id = year = 0; title = ""; }
        Media(int _id, string _title, int _year): id(_id), title(_title), year(_year) {}
//      virtual ~Media() = 0;
        void changeID(int newID){ id = newID; }
        virtual void print(ostream &out);
};
Run Code Online (Sandbox Code Playgroud)

事情是:没有析构函数,GCC给了我一堆警告class has virtual functions but non-virtual destructor,但仍然编译,我的程序工作正常.现在我想摆脱那些烦人的警告,所以我通过添加一个虚拟析构函数来满足编译器,结果是:它没有编译,错误:

undefined reference to `Media::~Media()`
Run Code Online (Sandbox Code Playgroud)

使析构函数纯虚拟并不能解决问题.出了什么问题?

c++

23
推荐指数
4
解决办法
3万
查看次数

如何在 Python 中键入提示通用数字类型?

如果之前有人问过这个问题,但我找不到任何相关的答案,请原谅我。

考虑一个将数字类型作为输入参数的函数:

def foo(a):
    return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)

这适用于整数、浮点数和复数。

是否有基本类型,以便我可以进行类型提示(真实现有类型/基类),例如:

def foo(a: numeric):
    return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)

此外,我需要在集合类型参数中使用它,例如:

from typing import Collection;
def foo(_in: Collection[numeric]):
    return ((_in[0]+_in[1])*2)**4;
Run Code Online (Sandbox Code Playgroud)

python types type-hinting python-3.x

23
推荐指数
3
解决办法
6678
查看次数

如何更改xcode项目中文件的位置?

*.xcodeproj不小心把一些文件放在同一级别的文件中.当我将这些文件移动到Finder中的正确位置时,Xcode告诉我这些文件丢失了.所以我删除了包含这些文件名称已被读取的组(我意识到这是一个错误).然后我将这些文件从Finder拖到xcode中以构建一个新组.但是当我尝试运行该项目时,Xcode仍然无法找到这些代码.我该如何解决这个问题?

xcode

19
推荐指数
1
解决办法
2万
查看次数

为什么C++中的缓冲很重要?

我试图打印"Hello World"200,000次,它让我永远,所以我必须停下来.但是在我添加一个char数组作为缓冲区后,它花了不到10秒.为什么?

在添加缓冲区之前:

#include <iostream> 
using namespace std;

int main() {
        int count = 0;
        std::ios_base::sync_with_stdio(false);
        for(int i = 1; i < 200000; i++)
        {       
                cout << "Hello world!\n";
                count++;
        }
                cout<<"Count:%d\n"<<count;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是在添加缓冲区之后:

#include <iostream> 
using namespace std;

int main() {
        int count = 0;
        std::ios_base::sync_with_stdio(false);
        char buffer[1024];
        cout.rdbuf()->pubsetbuf(buffer, 1024);
        for(int i = 1; i < 200000; i++)
        {       
                cout << "Hello world!\n";
                count++;
        }
                cout<<"Count:%d\n"<<count;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这让我想起了Java.使用BufferReader读取文件有什么好处?

c++ buffer

18
推荐指数
2
解决办法
2万
查看次数

了解struct sockaddr

struct sockaddr {
    unsigned short sa_family;   // address family, AF_xxx
    char           sa_data[14]; // 14 bytes of protocol address
};
Run Code Online (Sandbox Code Playgroud)

在这个结构中,究竟是什么意思地址家族所描述的sa_family

这是否意味着像TCP/UDP这样的协议有"地址"?嗯,我认为协议可以是识别号码而不是地址.

无论如何,如果是,那么他们的家庭在什么基础上被划分?

sockets networking network-programming network-protocols

18
推荐指数
1
解决办法
7万
查看次数

在Mac终端中暂停正在运行的脚本,然后再继续

如何从OSX中的终端暂停(不停止)正在运行的脚本,以便稍后从暂停的点恢复?

macos bash terminal

17
推荐指数
3
解决办法
3万
查看次数

BaseHTTPServer和SimpleHTTPServer有什么区别?何时何地使用它?

BaseHTTPServer和SimpleHTTPServer有什么区别?我应该在何时何地使用这些?

python http basehttpserver simplehttpserver

16
推荐指数
1
解决办法
5638
查看次数

如何从字符串中删除特定的子字符串?

在我的C++程序中,我有字符串

string s = "/usr/file.gz";
Run Code Online (Sandbox Code Playgroud)

在这里,如何使脚本检查.gz扩展(无论文件名是什么)并将其拆分为"/usr/file"

c++ string substring

15
推荐指数
2
解决办法
6万
查看次数

在python opencv中通过网络发送实时视频帧

我正在尝试将我用相机捕获的实时视频帧发送到服务器并处理它们.我是用于图像处理的opencv和用于该语言的python.这是我的代码

client_cv.py

import cv2
import numpy as np
import socket
import sys
import pickle
cap=cv2.VideoCapture(0)
clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clientsocket.connect(('localhost',8089))
while True:
    ret,frame=cap.read()
    print sys.getsizeof(frame)
    print frame
    clientsocket.send(pickle.dumps(frame))
Run Code Online (Sandbox Code Playgroud)

server_cv.py

import socket
import sys
import cv2
import pickle
import numpy as np
HOST=''
PORT=8089

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print 'Socket created'

s.bind((HOST,PORT))
print 'Socket bind complete'
s.listen(10)
print 'Socket now listening'

conn,addr=s.accept()

while True:
    data=conn.recv(80)
    print sys.getsizeof(data)
    frame=pickle.loads(data)
    print frame
    cv2.imshow('frame',frame)
Run Code Online (Sandbox Code Playgroud)

这段代码给了我文件结束错误,这是合乎逻辑的,因为数据总是不停地进入服务器而pickle不知道何时完成.我在互联网上的搜索让我使用泡菜,但它到目前为止还没有用.

注意:我设置conn.recv为80,因为这是我说的时候得到的数字print sys.getsizeof(frame).

python opencv numpy

15
推荐指数
3
解决办法
3万
查看次数

Python HTTP Server/Client:远程结束关闭连接,没有响应错误

我使用简单的HTTP Server BaseHTTPRequestHandler.问题是,当我想使用来自客户端的请求发布一些数据时,我得到了ConnectionError.我从requestslib文档做了简单的请求.同样有趣的是,HTTP Server将从客户端接收数据并将其打印到控制台.我不明白它是如何可能的.

客户:

def post_data():
    """Client method"""
    json_data = {
        'sender': 'User',
        'receiver': 'MY_SERVER',
        'message': 'Hello server! Sending some data.'}
    data_headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
    data_payload = json.dumps(json_data)

    try:
        post = requests.post('http://localhost:8080/post', data=data_payload,
                             headers=data_headers)
        print(post.status_code)
    except ConnectionError as e:
        print("CONNECTION ERROR: ")
        print(e)
Run Code Online (Sandbox Code Playgroud)

HTTP服务器:

def do_POST(self):
    """Server method"""
    self.send_response(200)
    print("Receiving new data ...")
    content_length = int(self.headers['Content-Length'])
    post_data = self.rfile.read(content_length)
    print(post_data)
Run Code Online (Sandbox Code Playgroud)

服务器结果:

C:\Users\mypc\Projects\PythonFiles\httpserver>python server.py

Fri Jan  5 01:09:12 2018: HTTP Server started on …
Run Code Online (Sandbox Code Playgroud)

python error-handling httpserver python-requests

15
推荐指数
1
解决办法
4万
查看次数