简体   繁体   English

在Xcode IDE中用C ++初始化我自己的类的向量

[英]Initializing a vector of my own class in C++ in Xcode IDE

The issue that I am currently experiencing is as follows: 我当前遇到的问题如下:

I am attempting to construct a vector in my main.cpp file that contains only SingleBox objects (SingleBox is a class that I have defined), however, when I attempt to populate or resize that vector, the vector never contains any SingleBox objects and the code below the attempt to populate or resize the vector never executes in my main.cpp file. 我试图在仅包含SingleBox对象的main.cpp文件中构造一个向量(SingleBox是我定义的类),但是,当我尝试填充该向量或调整其大小时,该向量从不包含任何SingleBox对象,并且尝试填充或调整矢量大小的下面的代码从未在main.cpp文件中执行。

Thank you in advance to anyone offering assistance in resolving this issue. 在此先感谢您提供协助解决此问题的任何人。

File main.cpp 文件main.cpp

#include <iostream>
#include "SingleBox.h"
#include "NineBox.h"

int main( int argc, const char * argv[] )
{
    std::vector< SingleBox > vec;
    std::cout << "Below is the attempt to populate: \n";
    vec.push_back( SingleBox( 0, 0 ) );
    std::cout << "Nothing from this point onward executes...\n";
    std::cout << "The size: " << vec.size() << std::endl;

    return 0;
}

File SingleBox.h 文件SingleBox.h

#ifndef __Sudoku_Solver__SingleBox__
#define __Sudoku_Solver__SingleBox__

#include <iostream>
#include <vector>

// SingleBox class definition
class SingleBox
{
public:
    SingleBox( int nineBoxNum, int boxValue ); // constructor

    void updatePoss( int number );             // function to remove disproven possibilities

    // get functions
    bool isComplete(  );                       // function to get the completion indicator
    int getBoxValue(  );                       // function to get the boxValue

    // debugging functions
    void debugPrinter(   );

private:
    bool completionStatus;                     // if the value of the SingleBox is non-zero
    int nineBoxNumber;                         // the NineBox to which the SingleBox belongs
    int boxValue;                              // the value of the SingleBox
    std::vector< int > possibilities;          // possible values for the SingleBox

    // set functions
    void setNineBoxNum( int nineBoxNum );      // function to set the NineBox number
    void setBoxValue( int boxVal );            // function to set the boxValue
    void setIndicator( bool isComplete );      // function to set the completion indicator
};

#endif /* defined(__Sudoku_Solver__SingleBox__) */

File SingleBox.cpp 文件SingleBox.cpp

#include "SingleBox.h"

// SingleBox constructor initializes each data member
SingleBox::SingleBox( int nineBoxNum, int boxVal )
{
    setNineBoxNum( nineBoxNum );
    setBoxValue( boxVal );
    setIndicator( false );
    possibilities = {1, 2, 3, 4, 5, 6, 7, 8, 9};
} // end SingleBox constructor

// set new NineBox number
void SingleBox::setNineBoxNum( int nineBoxNum )
{
    nineBoxNumber = nineBoxNum;
} // end function setNineBoxNum

// set new BoxValue number
void SingleBox::setBoxValue( int boxVal )
{
    boxValue = boxVal;
} // end function setBoxValue

// set new completion indicator
void SingleBox::setIndicator( bool isComplete )
{
    completionStatus = isComplete;
} // end function setIndicator

// return the status indicator
bool SingleBox::isComplete(  )
{
     return completionStatus;
}

// return the BoxValue
int SingleBox::getBoxValue(  )
{
    return boxValue;
} // end function getBoxValue

// set value to zero if in possibilities vector
void SingleBox::updatePoss( int number )
{
    int zeroCnt = 0;
    int value = 0;

    for ( int i = 0; i < possibilities.size(); i++ ) {
        if ( possibilities[ i ] == number ) {
            possibilities[ i ] = 0;
            break;
        }
    }

    for ( int j = 0; j < possibilities.size(); j++ ) {
        if ( possibilities[ j ] == 0 ) {
            zeroCnt++;
        }
        else {
            value = possibilities[ j ];
        }
    }

    if ( zeroCnt == possibilities.size() - 1 ) {
        boxValue = value;
        setIndicator( true );
    }
} // end function updateProbs

// print all data members of the class to the console
void SingleBox::debugPrinter(  )
{
    std::cout << std::endl;
    std::cout << "SingleBox class contains the following \n";
    std::cout << " - Completion status = " << completionStatus << std::endl;
    std::cout << " - NineBoxNumber     = " << nineBoxNumber << std::endl;
    std::cout << " - BoxValue          = " << boxValue << std::endl;
    std::cout << " - Possibilities     = [";

    for (int i = 0; i < possibilities.size(); i++) {
        std::cout << possibilities[i];
        if (i != possibilities.size() - 1) {
            std::cout << ", ";
        }
    }

    std::cout << "]\n" << std::endl;
} // end function debugPrinter

The Xcode IDE was not running a portion of my code because a breakpoint had been set. Xcode IDE没有运行我的代码的一部分,因为已经设置了断点。 Running the code via the g++ compile verified that my code was operational, and removing the breakpoint from Xcode allowed my code to operate in the IDE. 通过g ++编译器运行代码可验证我的代码是否可运行,并且从Xcode删除断点可让我的代码在IDE中运行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM