ソケットクライアントサーバーを作成しましたが、mythread.hファイルにソケットベクトルリストを作成します。修正することはできません。C2227:左に ' - > send'のクラス/構造体/共用体/ジェネリック型を指す必要があります
コード:
for (int i = 0; i < v_->size(); i++)
{
if(((MYThread *)(v_)[i])->user_id_ != user_id_)
{
((MYThread *)(v_)[i])->send(strArray);
}
}
エラー:
D:\My_Socket\My_Socket\server\server\mythread.cpp:101: error: C2440: 'type > cast': cannot convert from 'std::vector>' to > 'MYThread *' with [ _Ty=MYThread * ]
D:\My_Socket\My_Socket\server\server\mythread.cpp:101: error: C2227: left of '->user_id_' must point to class/struct/union/generic type
mythrad.hファイル
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QListWidget>
#include <QObject>
#include <QTcpSocket>
#include <QAbstractSocket>
#include <QDebug>
#include <vector>
#include <QThread>
#include <QString>
#include <QPixmap>
class MYThread : public QThread
{
public:
explicit MYThread(QThread *parent = 0);
explicit MYThread(QTcpSocket *socket, QListWidget *list, std::vector<MYThread *> *v, int user_id);
void doConnect();
void send(QByteArray data);
signals:
public slots:
void connected();
void disconnected();
void bytesWritten(qint64 bytes);
void readyRead();
void quitThread();
private:
QTcpSocket *socket_;
QListWidget *list_;
std::vector<MYThread *> *v_;
MYThread *tt;
void run();
QPixmap *pixmap;
MYThread *socket;
public:
int user_id_;
};
#endif // MYTHREAD_H
http://en.cppreference.com/ w/cpp/language/operator_precedence – chris
エラーメッセージを読みやすくするようにフォーマットしてください。 –
v_はベクトルではなく、ベクトルへのポインタです。要素の1つにアクセスしようとする前に、まず逆参照する必要があります。 – RobbieE