警告:未使用的变量'arrPixel'[-Wunused-variable]

时间:2014-02-14 03:04:58

标签: c++

Main.cpp的

#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上编写它而不会出错?

1 个答案:

答案 0 :(得分:3)

下面:

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

    char arrPixel[arrSize] = {};
}

您声明了一个名为arrPixel的局部变量,但您不使用它。你可以删除该行。

请注意,您有警告​​,而不是错误。