2014-02-14 4 views
0

main.cppпредупреждение: не используется переменная 'arrPixel' [-Wunused-переменная]

#include <iostream> 
#include <fstream> 
#include "steganography.h" // call steganography class 

const int arrSize = 30000;//array for contains pixels 
using namespace std; 
int main() 

{ 
    char FileName[20] = "new.txt"; 
    char NewFile[20] = "new.ppm"; 
    char arrPixel[arrSize] = {}; 
    int count = 0; 
    int option; 
    Steganography A;//create the reference of steganopragpy class 
    cout<<"Choose Enocde/Decode[1/2]"; // take option from user 
    cin>>option; 
    switch(option) 
    { 
    case 1: 
    cout << "Enter PPM File Name" << endl; 
    cin>>FileName; 
    cout << "Enter Output File Name"<< endl; 
    cin>>NewFile; 
    A.readImage(FileName, arrPixel);//call readImage method 
    cout << "Encoded Successfully completed:" << endl; 
    A.printImage(NewFile, arrPixel);//write ppm 
    break; 
    case 2: 
    cout << "Enter Input File Name" << endl; 
    cin>>FileName; 
    cout << "Enter Output PPM File Name"<< endl; 
    cin>>NewFile; 
    A.readCipherText(NewFile, arrPixel);//call read file method 
    cout << "Decoded Successfully completed:" << endl; 
    A.printCipherText(FileName, arrPixel);//write ppm 
    break; 

     default: 
      cout<<"wrong choice"; 
    } 

    // cout << NewFile << endl; 
    for(int ct = 0; ct > arrSize; ct++) 
    { 
     cout << arrPixel[ct]; 
    } 


    return 0; 
} 

steganography.cpp

#include <iostream> 
#include <fstream> 
#include <string> 
#include "steganography.h" // call steganography class 
const int arrSize = 30000;//array for contains pixels 
using namespace std; 

Steganography::Steganography()//call steganography constructor 
{ 

    char arrPixel[arrSize] = {}; 
} 


void Steganography::readImage(char* FileName, char* arrPixel)//read image 
{ 
    ifstream infile (FileName);//open file 
    if(infile.is_open()) 
    { 
     for(int count = 0; count < arrSize; count++) 
     { 
      infile >> noskipws >> arrPixel[count]; 
     } 
    } 
    else 
    { 
     cout << "Error opening new file." << endl; 
     //abort(); 
    } 
    infile.close(); 
    } 

void Steganography::readCipherText(char* FileName, char* arrPixel)//read text file contains ppm info 
{ 
    ifstream infile (FileName); 
    if(infile.is_open()) 
    { 
     for(int count = 0; count < arrSize; count++) 
     { 
      infile >> noskipws >> arrPixel[count]; 
     } 
    } 
    else 
    { 
     cout << "Error opening new file." << endl; 
     //abort(); 
    } 
    infile.close(); 
    } 

void Steganography::printImage(char* NewFile, char* arrPixel)//write image 
{ 

    ofstream outfile (NewFile); 

    if(outfile.is_open()) 

    { 

     int count = arrSize; 
     for(int i = 0; i < (count - 1); i++) 
     { 
      outfile << arrPixel[i]; 
     } 
    } 
    else 
    { 
     cout << "Error opening new file." << endl; 
     // abort(); 
} 
    outfile.close(); 

} 
void Steganography::printCipherText(char* NewFile, char* arrPixel)//write ppm file 
{ 

    ofstream outfile (NewFile); 

    if(outfile.is_open()) 

    { 

     int count = arrSize; 
     for(int i = 0; i < (count - 1); i++) 
     { 
      outfile << arrPixel[i]; 
     } 
    } 
    else 
    { 
     cout << "Error opening new file." << endl; 
     // abort(); 
} 
    outfile.close(); 

} 

steganography.h

#ifndef STEGANOGRAPHY_H 
#define STEGANOGRAPHY_H 
#include <string> 
#include <vector> 
class Steganography { 
private: 
    // Image header 
    std::string image_type; 
    int width, height; 
    int max_color_depth; 
    // Image data 
    std::vector<int> color_data; 

    // Hidden data 
    std::string ciphertext;  
    int getNthBit(char cipher_char, int n); 

public: 
    Steganography(void);  //Constructor  
    void readImage(char*,char*); 



    void printImage(char*,char*); 



    void readCipherText(char*,char*); 


    void printCipherText(char*,char*); 


    void cleanImage(); 


    void encipher(); 



    void decipher(); 

}; 

#endif 

Когда я компилирую, я получаю это предупреждение:

steganography.cpp: In constructor ‘Steganography::Steganography()’: 
steganography.cpp:11:10: warning: unused variable ‘arrPixel’ [-Wunused-variable] 

Может кто-нибудь помочь мне разобраться с проблемой. Кроме того, я должен написать эту строку const int arrSize = 30000; как в Main.cpp, так и в steganography.cpp, чтобы избежать ошибок, есть ли способ написать его только на steganography.cpp без ошибок?

ответ

3

Здесь:

Steganography::Steganography()//call steganography constructor 
{ 

    char arrPixel[arrSize] = {}; 
} 

Вы объявить локальную переменную с именем arrPixel, и вы не используете его. Вы можете удалить эту строку.

Обратите внимание, что у вас есть предупреждение, а не сообщение об ошибке.

+0

Я удалил его, и он работает, спасибо. Вы знаете, как удалить const int arrSize = 30000; from main.cpp – user3093902

+0

@ user3093902 Вы можете передать размер как аргумент функции, используйте 'std :: vector ' вместо массива или используйте шаблоны функций для вывода размера. Прочитайте «Передача массивов в функции», в SO есть много вопросов. – juanchopanza

Смежные вопросы