質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

3001閲覧

C++:intの値とint*の値の比較

nanameko

総合スコア17

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/08/08 00:39

編集2018/08/08 00:49

if(int型+int型>int型)
のようなコードを書くと、「オペランド型の互換性がありません」とのメッセージが
VC18で表示されます。

int*とintの値を比べる方法を教えていただきたいです。
よろしくおねがいします

###ソースコード

lang

1#include <fstream> //ファイル読み込み用 2#include <iostream> //ファイル読み込み用 3#include <string> //String型使用をする用 4#include <opencv2/opencv.hpp> //画像サイズ取得用 5#include <stdio.h> //タイトルバー設定用 6#include <windows.h> //タイトルバー設定用 7#include <vector> //可変長配列使用をする用 8#include <sstream> //stoi用(stringからint) 9#include <stdint.h>//intptr_t用(ポインタ) 10using namespace std; 11 12const int imgnum = 7600; 13string strdata[7600]; 14 15string imgdata_pass[7600]; 16int imgdata_box[7600][15][4]; 17int imgdata_size[7600][2]; 18 19int road()//読み込み関数 20{ 21 ifstream ifs("annotation.txt"); 22 string str; 23 if (ifs.fail()) 24 { 25 cerr << "リストファイルが読み込めません" << endl; 26 return -1; 27 } 28 int i = 0; 29 while (getline(ifs, str)) 30 { 31 strdata[i] = str; 32 cout << "[" << strdata[i] << "]" << endl; 33 ::SetConsoleTitle(TEXT("リスト読み込み中")); 34 i++; 35 } 36 return 0; 37} 38 39 40vector<string> split(const string &str, char sep)//分割関数 41{ 42 vector<string> v; 43 stringstream ss(str); 44 string buffer; 45 while (getline(ss, buffer, sep)) 46 { 47 v.push_back(buffer); 48 } 49 return v; 50} 51 52int analysis()//解析関数 53{ 54 ::SetConsoleTitle(TEXT("リスト解析中")); 55 int a = 0; 56 int b[4] = { 0,0,0,0 }; 57 for (int i = 0; i < imgnum; i++) 58 { 59 vector<string> v = split(strdata[i], ' '); 60 imgdata_pass[i] = v[0];//画像パス代入 61 a = stoi(v[1]); 62 for (int j=0;j<a;j++) 63 { 64 b[0] = stoi(v[j*5+2]);//string型をint型に変換 65 b[1] = stoi(v[j * 5 + 3]); 66 b[2] = stoi(v[j * 5 + 4]); 67 b[3] = stoi(v[j * 5 + 5]); 68 69 imgdata_box[i][j][0] = b[0];//短形情報を代入 70 imgdata_box[i][j][1] = b[1]; 71 imgdata_box[i][j][2] = b[2]; 72 imgdata_box[i][j][3] = b[3]; 73 } 74 } 75 76 return 0; 77} 78 79int count(int num) {//要素数カウント 80 81 int count = 0; 82 for (int i; i < 13; i++) { 83 if (imgdata_box[num][i][2] != NULL) 84 { 85 count++; 86 } 87 } 88 return count; 89} 90 91int trimming()//情報修正関数 OpenCV使用 92{ 93 //画像のサイズを取得 94 ::SetConsoleTitle(TEXT("リスト修正中")); 95 for (int i = 0; i < imgnum; i++) 96 { 97 cv::Mat img = cv::imread(imgdata_pass[i]); 98 if (img.empty()) { 99 cout << "画像が読み込めません" << endl; 100 return 1; 101 } 102 imgdata_size[i][1] = img.rows;//縦 103 imgdata_size[i][0] = img.cols;//横 104 } 105 106 //情報修正 107 int a = 0; 108 for (int i = 0; i < imgnum; i++) 109 { 110 a = count(i); 111 for (int j = 0; j < a; j++) 112 { 113 /*ここです*/if (imgdata_box[i][j][0]+imgdata_box[i][j][2]>imgdata_size[1]) 114 { 115 116 } 117 } 118 } 119 120 return 0; 121} 122 123int main() 124{ 125 road(); 126 analysis(); 127 trimming(); 128 129 return 0; 130} 131

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

imgdata_size[1]はimgdata_size**[i]**[1]の間違いではないでしょうか?

投稿2018/08/08 01:12

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanameko

2018/08/08 02:58

ありがとうございました。初歩的な間違えでしたね、すみませんm(_ _)m
guest

0

なにをしたくてそれをするんでしょうか。

出ているとおり、

オペランド型の互換性がありません

ので、意味がありません。


おそらく、あなたの本当にやりたいことはそれじゃないはずです。
どういうコードで、どういうことをしたいのか、というのを提示しましょう。

投稿2018/08/08 00:41

編集2018/08/08 00:48
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問